發(fā)布到私有Maven倉(cāng)庫(kù)
詳細(xì)教程:http://blog.csdn.net/H_Zhang/article/details/51558800
初衷:因多個(gè)項(xiàng)目使用同一個(gè)Module,每當(dāng)需要修改Module時(shí)代價(jià)太大,所以講Module上傳時(shí)私有Maven倉(cāng)庫(kù)進(jìn)行統(tǒng)一維護(hù)。
我們使用Nexus在本地搭建了一個(gè)Maven倉(cāng)庫(kù)。
啟動(dòng)Nexus睦霎,在瀏覽器輸入:http://localhost:8081/nexus/ 即可看到Maven倉(cāng)庫(kù)管理界面。
在Module中新建一個(gè)nexus-push.gradle,內(nèi)容如下
apply plugin: 'maven'
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
failOnError false// 忽略錯(cuò)誤配置
}
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倉(cāng)庫(kù)的賬號(hào)及密碼
}
// 發(fā)布到maven的相關(guān)信息
pom.groupId = 'com.mit.android'// 項(xiàng)目包名
pom.artifactId = 'xlib'// 庫(kù)名
pom.version = '0.0.1'// 版本號(hào)
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, 腳本編寫(xiě)完之后韵丑,在A(yíng)ndroid Studio的Terminal面板執(zhí)行如下命令
gradlew uploadArchives
發(fā)布成功后就可以在nexus查看已發(fā)布的項(xiàng)目
接下來(lái),我們?cè)陧?xiàng)目中引用這個(gè)maven倉(cāng)庫(kù)的aar包
首先在項(xiàng)目根目錄下的build.gradle文件添加倉(cāng)庫(kù)url地址虚缎。
build.gradle
allprojects {
repositories {
jcenter()
maven {
url "http://localhost:8081/nexus/content/repositories/releases/"
}
}
}
接下來(lái)在app的build.gradle中添加依賴(lài)即可使用撵彻。
app/build.gradle
compile 'com.mit.android.xlib:xlibrary:0.0.1'
遇到的各種坑以及解決辦法
坑一:錯(cuò)誤: 編碼GBK的不可映射字符->請(qǐng)正確配置javadoc編碼
task javadoc(type: Javadoc) {
options.encoding "UTF-8"
options.charSet 'UTF-8'
}
坑二:錯(cuò)誤: 不允許使用自關(guān)閉元素->請(qǐng)刪除javadoc注釋里面所有的含有html標(biāo)簽
坑三: 錯(cuò)誤: 程序包android.support.v7.widget不存在;錯(cuò)誤: 找不到符號(hào) ->在javadoc中加入忽略錯(cuò)誤配置
task javadoc(type: Javadoc) {
failOnError false
}
坑四:Could not create version ‘0.1’: HTTP/1.1 401 Unauthorized [message:This resource requires authentication]实牡,->沒(méi)有配置正確的Maven Key