背景
Android有时候项目当中用到第三方的时候,可能通过maven仓库引入或者通过aar包引入;aar包还好,可以直接放到项目里,但有时候也可能比较麻烦,假如多个项目用到同个aar包,还需要将aar包搬进多个项目中进行引用;而通过maven仓库引用则没这个烦恼,但有个问题,假如用到了国外的maven,同时国外的maven被强、国内又没有相关代理那怎么办,只能想办法下载原有maven仓库中的aar包,此时的问题又回到了多个项目引用aar包的麻烦事
正文
新建一个gradle,比如叫xxxaar_publish.gradle,其内容如下:
apply plugin:'maven-publish'
publishing {
repositories {
maven {
//提交到远程服务器:
credentials {
//maven用户名
username mavenUn
//maven密码
password mavenPwd
}
//maven地址
url mavenUrl
}
}
publications {
common(MavenPublication){
artifact('xxxxx.aar'){
groupId 'com.yyyyy'
artifactId 'zzzz'
version '1.0.0'
}
}
}
}
写好xxxaar_publish.gradle的内容之后,就在项目目录下的build.gradle文件中引用
apply from: 'xxxaar_publish.gradle'
Sync now之后,可以看到Gradle列表当中有所改变
点击publish或者publishCommonPublicationToMavenRepository后就可上传到maven仓库上
补充
- 万一想上传到maven仓库上的aar不止一个怎么办?
新建一个如xxx2aar_publish.gradle的文件,内容和xxxaar_publish.gradle类似,只不过artifact、groupId、artifactId和version都得改成另外的一个aar的相关信息;另外需要在build.gradle文件中添加代码:
apply from: 'xxx2aar_publish.gradle'
Sync now之后在Gradle列表中多出一个publishCommonPublicationToMaven2Repository
- MavenPublication这个类中支持的写法不止以上一种,还可以写成
publications {
common(MavenPublication){
groupId 'com.yyyyy'
artifactId 'zzzz'
version '1.0.0'
artifact 'xxxxx.aar'
}
}
更多的可参考MavenPublication这个类
- 如果需要同时传多个aar,就需要对publications做下改动,其中以上内容中的common,其实可看作一个key值,可随意命名,若要同时上传多个,可写成如下:
publications {
xxx1(MavenPublication) {
artifact('xxx1.aar') {
groupId 'com.yyyy'
artifactId 'zzzz1'
version '1.0.0'
}
}
xxx2(MavenPublication) {
artifact('xxx2.aar') {
groupId 'com.yyyy'
artifactId 'zzzz2'
version '1.0.0'
}
}
}