发布到私有Maven仓库
详细教程:http://blog.csdn.net/H_Zhang/article/details/51558800
初衷:因多个项目使用同一个Module,每当需要修改Module时代价太大,所以讲Module上传时私有Maven仓库进行统一维护。
我们使用Nexus在本地搭建了一个Maven仓库。
启动Nexus,在浏览器输入:http://localhost:8081/nexus/ 即可看到Maven仓库管理界面。
在Module中新建一个nexus-push.gradle,内容如下
apply plugin: 'maven'
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
failOnError false// 忽略错误配置
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
artifacts {
archives androidSourcesJar
archives androidJavadocsJar
}
task javadoc(type: Javadoc) {
options.encoding "UTF-8"
options.charSet 'UTF-8'
}
allprojects {
repositories {
mavenLocal()
jcenter()
}
}
uploadArchives {
repositories {
mavenDeployer {
repository(url: "http://localhost:8081/nexus/content/repositories/releases/") {
authentication(userName: "xxx", password: "xxx")// maven仓库的账号及密码
}
// 发布到maven的相关信息
pom.groupId = 'com.mit.android'// 项目包名
pom.artifactId = 'xlib'// 库名
pom.version = '0.0.1'// 版本号
pom.project {
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
}
}
}
}
然后在Module的build.gradle的最后添加如下代码:
apply from: './nexus-push.gradle'
OK, 脚本编写完之后,在Android Studio的Terminal面板执行如下命令
gradlew uploadArchives
发布成功后就可以在nexus查看已发布的项目
接下来,我们在项目中引用这个maven仓库的aar包
首先在项目根目录下的build.gradle文件添加仓库url地址。
build.gradle
allprojects {
repositories {
jcenter()
maven {
url "http://localhost:8081/nexus/content/repositories/releases/"
}
}
}
接下来在app的build.gradle中添加依赖即可使用。
app/build.gradle
compile 'com.mit.android.xlib:xlibrary:0.0.1'
遇到的各种坑以及解决办法
坑一:错误: 编码GBK的不可映射字符->请正确配置javadoc编码
task javadoc(type: Javadoc) {
options.encoding "UTF-8"
options.charSet 'UTF-8'
}
坑二:错误: 不允许使用自关闭元素->请删除javadoc注释里面所有的含有html标签
坑三: 错误: 程序包android.support.v7.widget不存在;错误: 找不到符号 ->在javadoc中加入忽略错误配置
task javadoc(type: Javadoc) {
failOnError false
}
坑四:Could not create version ‘0.1’: HTTP/1.1 401 Unauthorized [message:This resource requires authentication],->没有配置正确的Maven Key