Android Gradle 本地化部署 maven

Android Gradle 本地化部署 maven


1、Gradle 脚本

在 Android Studio 中,我们经常引用 aar 文件及 maven 库中的资源。一般来说,我们通过 compile ‘package:library_name:version‘ 的方式来引用 maven 库中的包。而通过 compile(name: ‘xxx‘, ext: ‘aar‘) 的方法引用本地生成或其他项目生成的 aar 包(详细请见)。

2、Gradle 引用方式

上面说的本地直接引用 aar 文件的方式有一些问题,比如:

- 资源文件预览等等会有一些 Bug;

- 新生成 aar 后,在多个项目之间共享时,频繁的拷贝同步会很麻烦。

所以我们尝试在本地部署我们的项目,然后在其他项目中直接可以引用了。首先,我们知道,在 Build 脚本运行 compile package:library_name:version 时,会去下面一些目录寻找:

如果你额外在 build.gradle 中自定义配置了本地目录的话,还会去这个目录下面查找,比如在 build.gradle 中配置了:

那么查询的目录会多加四个:

- file:/PROJECT_PATH/commonlibs/library_name.jar

- file:/PROJECT_PATH/commonlibs/library_name-version.jar

– file:/PROJECT_PATH/MODULE_NAME/libs/library_name.jar

- file:/PROJECT_PATH/MODULE_NAME/libs/library_name-version.jar

当在这些目录都找不到依赖后,会运行出错,组建失败。

3、本地部署 aar

在知道了 Gradle 的引用查找原则之后,我们就可以将自己的项目按需部署到本地了。我们一般配置在 ANDROID_HOME/extras/android/m2repository 这个目录中,这样,其他所有工程都可以很方便的访问到,同步更新也只更新一个地方即可。

首先,我们在系统环境变量中设置 ANDROID_HOME——指向 Android SDK 的安装目录,确保本地部署时能找到相应的目录。

然后,为所需部署的 Module 编写 build.gradle 脚本如下:

我们可以看出,有如下步骤:

- apply plugin: ‘maven‘:引用 maven 插件进行部署;

- 增加 uploadArchives Task,用于部署 Module;

- 在 mavenDeployer 中编写相应的配置,包括部署路径、version、groupId、artifactId 等等;

我们可以看到,我们将部署目标路径设为:file://localhost/ANDROID_HOME/extras/android/m2repository/,这样部署后,相应的 aar、pos、jar 等等文件都会在这个目录中找到。

4、执行部署

执行部署非常简单,我们可以在命令行执行 gradle uploadArchives 这个任务。或者另一种办法是在 Gradle Projects 窗口找到这个 Module 对应的部署 Task,双击执行这个 Task 即可:

在执行完成后,我们在相应的目标目录可以找到部署的文件:

部署完成后,我们在其他工程中,直接 compile ‘package:library_name:version‘就可以引用了。Gradle 会自动查找到这个依赖以及相应的库文件,引入到工程中进行组建。

5、多 Module 部署

在比较大的项目中,我们经常会在一个 Project 中拥有多个 Module,而这些 Module 中又有相互引用的情况。比如:

比如这个例子中,project 下有两个 Module,而 ModuleB 又在项目内引用了 ModuleA,这时候,在部署 ModuleB 的时候,为 ModuleB 生成的 pom 文件会有问题:

我们可以看出,ModuleB 的 pom 中声明引用了 ModuleA,但是 Module A 对应的 groupIdversion 都不对,这样,在第三方引用 ModuleB 的时候,会出现依赖错误。这个时候,解决办法是在 ModuleA 的 build.gradle 中加入 project.groupproject.version ,这样在生成 ModuleB 的 pom 的时候,会自动填入这两个值。

ModuleA 的 build.gradle 如下:

如果填写了 project.groupproject.version 后,就没必要在 mavenDeployer 中填写 pom.groupIdpom.version 了,Gradle 会自动使用 project.groupproject.version 填入。这样,为 ModuleA 和 ModuleB 部署,都不会出现问题了。

6、参考

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-05 23:25:17

Android Gradle 本地化部署 maven的相关文章

Android Gradle插件用户指南

原文Gradle Plugin User Guide - Android Tools Project Site samples see bottom of New Build System 参考Gradle For Android Training Course 1 简介 这篇文档是基于0.9版本的Gradle插件,1.0以前的版本由于不兼容,可能会有所不同 1.1 新的构建系统的目标 新构建系统的目标是: 使得代码和资源的重用更加简单 使得创建同一应用程序的不同版本更加容易,不管是多个apk版

拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建

使用.创造和分享 笔者曾经不思量力的思考过『是什么推动了互联网技术的快速发展?』这种伟大的命题.结论是,除了摩尔定律之外,技术经验的快速积累和广泛分享,也是重要的原因. 有人戏称,『写 Java,首先要学会选包』,在这里不好评论对错.不过这句话里面,至少包含两层意思:首先 Java 有大量的现成的依赖包,不必要自己造轮子:其次,Java 的包存放较为集中,集成方式也方便. 笔者从事 Android 和 Java 开发以来,经历了几个阶段: 闭门造轮子 > 使用别人的轮子 > 开门造轮子 >

Android Gradle 完整指南

为什么需要学Gradle? Gradle 是 Android 现在主流的编译工具,虽然在Gradle 出现之前和之后都有对应更快的编译工具出现,但是 Gradle 的优势就在于它是亲儿子,Gradle 确实比较慢,这和它的编译过程有关,但是现在的Gradle 编译速度已经有了成倍提高.除此之外,相对其他编译工具,最重要的,他和 Android Studio 的关系非常紧密,可以说对于一些简单的程序我们几乎不需要任何代码上的配置只使用 Android Studio 就可以完成编译和运行. 但是对于

Android Gradle插件用户指南(译)

Android Gradle插件用户指南(译) 原文Gradle Plugin User Guide - Android Tools Project Site samples see bottom of New Build System 参考Gradle For Android Training Course 1 简介 这篇文档是基于0.9版本的Gradle插件,1.0以前的版本由于不兼容,可能会有所不同 1.1 新的构建系统的目标 新构建系统的目标是: 使得代码和资源的重用更加简单 使得创建同

如何在Android Gradle中添加原生so文件依赖

@author ASCE1885的 Github 简书 微博 CSDN 原文链接 背景 几个月前,基于Google的LevelDB,我为Android平台写了一个名为SnappyDB的键值数据库(NoSQL). 由于它使用到了原生C++代码,因此最终生成的文件除了Jars包还有so文件. 通过Maven仓库发布我们的函数库没有什么问题(只要你通过繁琐的发布流程),maven-android-plugin可以帮助我们包含共享库.Maven依赖规则使得我们可以指定想要获取的ABI(不同的CPU架构)

用IntelliJ实现android gradle插件

用IntelliJ实现android gradle插件 android的gradle插件用了不少了,比如说官方的应用构建插件(com.android.application),lib构建插件(com.android.library),还有第三方的比如辅助multidex的DexKnifePlugin.但是怎么自己创建一个gradle插件一直不明白,今天就试一试自己撸一个android gradle插件,毕竟实践出真知. 基础知识 首先得知道一个gradle插件有需要哪些元素. 我们以androi

Android Gradle Plugin指南(四)——測试

原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Testing 5.Testing(測试) 构建一个測试程序已经被集成到应用项目中,没有必要再专门建立一个測试项目. 5.1 Basics and Configuration(基本知识和配置) 正如前面所提到的,紧邻main sourceSet的就是androidTest sourceSet,默认路径在src/androidTest/下. 在这个測试so

Android Gradle编译学习日记之一(搭建 Gradle 环境以及编译 Android 应用)

大家如果喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 Google 在最近正式推出了 Android Studio 1.0版本,开发者首页的默认开发工具也已经更改成了 Android Studio,我想我们是时候全面转型到 Android Studio 开发了. 其实抛开界面因素,Android Studio 与 Eclipse ADT 构建 Android

React Native Android Gradle 编译流程浅析

[工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果.私信联系我] 1 背景 前面已经发车了一篇<React Native Android 从学车到补胎和成功发车经历>,接着就该好好琢磨一下 React Native 周边了,没看第一篇的可以先去看看:这里我们先从 React Native 的 Android 编译来简单揭晓一下 React Native 在集成的过程中到底干了哪些不可告人的坏事:由于我们项目准备以 Gradle 形式接入