1.前言
建议电脑端观看,多图慎入
平常项目中遇到的一些公共组件,公共模块,多个项目都在使用的情况下,我们一般有以下几种做法
1.整个module导入工程,如果module中有什么bug,修改了还要其他项目再重新添加进去,很不方便
2.module打包AAR,多个项目引用添加,如果有什么bug,修改了重新发给其他项目成员重新更新
3.使用Gradle Add Libay的方式 类似:implementation 'com.android.support:appcompat-v7:27.1.1' 的方式来
引用我们的module,如果有bug,只需要维护,修改的人直接重新上传module,我们修改版本号,重新bulid就可以更新module
从上面可以看到,第三种做法更佳,所以呢,接下来,往下看
2.How To Use
1.从文章标题知道,我们将要使用maven来管理我们的AAR文件,但是我们做Android开发也没有涉及到什么Maven相关的知识啊,怎么办呢,没关系,现在傻瓜式教学,首先看下图
这里用Rxjava举个例子,可以看到左边有很多的引用方式,apache maven ,apache Buildr,Gradle等引用方式,那么这maven引用和平时用Gradle引用又有什么关系呢?文章标题说上传到本地maven,那是不是就是用图上说的maven的方式去引用呢?别着急,接下来我就百度google一下,解决大家的问题,以及我也想知道,为什么上传到maven以后,可以通过gradle的方式来引用,哈哈。
结果如下:
1.首先呢,maven和Gradle都是构建工具,
2.我也没看明白,大概就是说,Gradle也是基于Maven来构建的,只是引用方式不同,maven采用xml的配置,gradle简化了这样的配置操作,一行代码可以搞定。
这里有一篇文章做了maven和Gradle的对比:Gradle vs Maven Comparison 、Maven 和 Gradle 对比,里面大概讲了gradle的灵活性,性能,用户体验都比maven好,这也是google采用gradle作为Android的官方build Tools。
好了,上面讲了那么多题外话,不管怎么样(当然知其然更要知其所以然也很重要 调皮.jpg),接下来看看我们应该怎么用吧。
分享一下我在开始捣鼓这个东西的时候,我是怎么一个思路吧,既然我知道可以通过maven的方式管理AAR文件,那么我们接下来要做的事情就是
1.要拥有一个maven仓库,能够上传到maven
那么我们第一件事就是安装maven,这里nexus maven百度了解一下,那么我们就开始吧:
2.1 第一步
- 1.下载 nexus https://www.sonatype.com/download-oss-sonatype (有反馈说这个地址无法打开,发现好像被墙了,大家可以试一下这个地址 https://help.sonatype.com/repomanager3/download,看能不能打开,如果还是不行,我这里下载了一份上传到了百度云,将就用吧。https://pan.baidu.com/s/1SWjOypj0xUGMqSMjl_VyVQ 提取码: yci6 )
这里我选择Windows下载
- 2.进入到你安装的目录,这里我最后逇目录是nexus-3.12.0-01-win64\nexus-3.12.0-01\bin 目录下执行 nexus.exe /run,然后等待安装,我这里已经安装好了执行nexus.exe /run是下面这个样子
- 3.需要进入到nexus-3.12.0-01\etc文件下 ,按需修改nexus-default.properties配置文件,这里我的配置文件如下:
- 4.然后可以使用http://127.0.0.1:8081的地址打开,然后右上角登录,账号默认admin 密码 admin123,登录进去的界面:
ok,到这里我们完成了第一阶段,安装了可以管理maven的这样一个平台。
2.2 第二步
既然已经安装好了,那么,我们也要有东西可以上传啊。那么我们肯定要有一个module啊,接下来我们新建一个简单的module测验
2.2.1 第一个新建model
上图可以看见,我们新建了一个很简单的module,里面添加了一个AAA的测试类,然后右边的文件证明这是一个apply plugin
是Android libary,就知道啥意思了吧,哈哈,现在我们有一个module,然后怎么上传到maven呢,这里有2种方式
2.2.2上传AAR包 做法1
#####2.2.2.1 创建,上传AAR#####
.首先生成一个AAR文件,执行gradle task-> build assembleRelease
打开我们的http://127.0.0.1:8081/这个网站,如果发现打不开了,估计是服务被关了,重新启动一下就好了,启动方式还是刚才安装的那个命令
打开cmd进入到安装目录下bin目录下打开 nexus.exe /run
打开以后按照如下做法
1.从左边切换到Browse菜单,然后点击maven-releases进入
第一次应该出现这样的界面
2.上传AAR文件
然后upload,会出现
点击View it now查看,
现在可以查看到我们上传的AAR咯
2.2.2.2 集成AAR
1.首先在我们需要引用项目的项目下的build.gradle文件下而不是最外层的build.gradle,添加
repositories {
maven {
url 'http://127.0.0.1:8081/repository/maven-releases' //这个路径就是Browse下maven-release右边有一个copy按钮,复制出来的。
}
}
然后添加
implementation 'demo.xiaxiayige.com:testmaven:1.0.0@aar'
这里的组合就是刚才填写的 graoupId:artifactId:version这里注意需要后面跟上@aar,如果不跟上这个默认是去加载.jar的文件,就会出现找不到的情况,怎么样可以不加,后面会讲到。
2.重新sync一下,就会从maven里面去下载我们的AAR包到本地,接下来看下效果
我们使用了前面Module里面创建的一个AAA类里面的print方法,并且在测试类中能够正常打印
怎么样,是不是很溜啊,傲娇.jpg
2.2.3 上传AAR包 做法2###
这种做法就比较easy了,直接看代码吧
1.首先我们修改我们的AAA类 添加一个方法
package demo.xiaxiayige.com.testmaven;
public class AAA {
public static void print(String string){
System.out.println("string = [" + string + "]");
}
public static boolean isEmpty(String str){
return str==null || str.length()==0;
}
}
2.然后在module的bulid.gradle下添加
apply plugin:'maven'
和
uploadArchives {
configuration = configurations.archives
repositories {
mavenDeployer {
repository(url: 'http://127.0.0.1:8081/repository/maven-releases/') {
authentication(userName: 'admin', password: 'admin123')
}
pom.project {
version '1.1.0'
artifactId 'testmaven'
groupId 'demo.xiaxiayige.com'
packaging 'aar'
description 'update version 1.1.0'
}
}
}
}
现在我们module的build.gradle 代码长这个样子
`apply plugin: 'com.android.library'
apply plugin:'maven' //新增
android {
compileSdkVersion 27
defaultConfig {
minSdkVersion 15
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
uploadArchives { //新增 ,因为Android Studio gradle 支持maven插件,所以可以添加此task
configuration = configurations.archives
repositories {
mavenDeployer {
repository(url: 'http://127.0.0.1:8081/repository/maven-releases/') {
authentication(userName: 'admin', password: 'admin123')
}
pom.project {
version '1.1.0' //版本名称
artifactId 'testmaven' //和前面网站上填写的一样
groupId 'demo.xiaxiayige.com' //和前面网站上填写的一样
packaging 'aar' //填写aar
description 'update version 1.1.0 add new method' //更新描述
}
}
}
}
`
更多关于gradle maven插件 详情查看 Maven Plugin
最后我们执行uploadArchives task
ok 可以看见bulid success。我们再去网站上看看,有没有1.1.0版本的存在
然后再去引用项目的build.gradle 代码修改版本号,改为 implementation ‘demo.xiaxiayige.com:testmaven:1.1.0’,重新sync,
这个时候,可以发现后面不用添加@aar也可以引用成功
我们再去测试代码调用刚才新增的这样一个方法
嗯,真是溜呢。
到这里,基本上结束了。
3.结尾
惯例结尾 喜欢的点个赞
4.彩蛋
总结一下吧:
1.安装maven管理的一个工具nexus
2.制作AAR
3.网站上传AAR
4.代码上传AAR