先嘮叨幾句啊,由于公司私服已經搭好了我就不費那勁琢磨搭建私服的事了阿浓,直接開擼上傳lib。下圖是我放組件庫的地方蹋绽,本來想一個module拉出一個項目來維護芭毙,后來想想實在是麻煩筋蓖,同時維護多個庫就要down多個庫下來,于是就統(tǒng)一管理了退敦。當然統(tǒng)一維護module多了自然會影響編譯的速度粘咖,可以在settings.gradle
里將不編譯的module注釋掉就可以了。現在就有圖片選擇侈百、表情瓮下、輸入框、星星钝域、視頻錄制讽坏、裁切等七七八八個庫,至于后面組件庫多了可能會分類按類型拉出幾個項目來管理例证,要不版本控制也是個麻煩事路呜。目前就是升級一個module在git上打個tag標簽。大家有啥好的建議歡迎留言哈织咧。
發(fā)布Library到私服
我們就以functionbar
這個組件庫為例吧
配置nexus賬戶信息
因為Nexus相關參數是固定的胀葱,包含倉庫地址、用戶名和密碼烦感,從安全性考慮我們把這些參數寫到gradle的Global配置中巡社,目錄是C:\Users(用戶名).gradle\gradle.properties
NEXUS_USERNAME=username
NEXUS_PASSWORD=password
NEXUS_REPOSITORY_URL=http://xxx/nexus/repository/maven-releases/
配置pom參數
項目根目錄下的gradle.properties中添加如下pom參數
//依賴庫名稱
POM_NAME=functionbar
//版本號
POM_VERSION=1.0.1
//類別
POM_ARTIFACTID=utils
//組id
POM_GROUPID=com.app
//打包類型
POM_PACKAGING=aar
引入gradle腳本
在library的build.gradle文件末尾加上如下引用,當然這個文件需要創(chuàng)建放到項目根路徑手趣,源碼在腳本解讀中
apply from: '../nexus_upload.gradle'
這個nexus_upload.gradle腳本包含生成java-source和java-doc晌该,如果注釋不完整可以注釋掉腳本里的androidJavadocsJar
調用,避免影響上傳绿渣。
發(fā)布
雙擊右側gradle task中的uploadArchives朝群,編譯并上傳library
等待一會出現Success字樣,證明已經上傳成功
最后我們去Nexus上驗證下中符,bingo姜胖!上傳成功。
腳本解讀
//依賴maven插件
apply plugin: 'maven'
task androidJavadocs(type: Javadoc) {
options.encoding = "utf-8"
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
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
//如果項目javadoc不全會報錯淀散,可以注釋掉
archives androidJavadocsJar
}
uploadArchives {
repositories {
mavenDeployer {
//倉庫地址
repository(url: NEXUS_REPOSITORY_URL) {
//私服賬戶信息
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
//pom必需的參數
pom.project {
name POM_NAME
version POM_VERSION
artifactId POM_ARTIFACTID
groupId POM_GROUPID
packaging POM_PACKAGING
}
}
}
}
使用私服上的Library
首先右莱,要在項目的build.gradle里面聲明私服的地址
allprojects {
repositories {
jcenter()
mavenCentral()
maven { url NEXUS_REPOSITORY_URL}
}
}
然后就是我們最熟悉的在module的build.gradle文件中添加依賴,注意 groupId后面是:
依賴庫名稱后面要加:
和版本號档插,我就犯過引用是groupId后面寫.
的錯誤慢蜓。
compile 'com.app:functionbar:1.0.1
發(fā)布Plugin(插件)到私服
發(fā)布步驟是和library一樣的只不過需要提一點,腳本信息需要做一些刪減郭膛,只用到以下這些晨抡。
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
//倉庫地址
repository(url: NEXUS_REPOSITORY_URL) {
//私服賬戶信息
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
//pom必需的參數
pom.project {
name POM_NAME
version POM_VERSION
artifactId POM_ARTIFACTID
groupId POM_GROUPID
packaging POM_PACKAGING
}
}
}
}
使用私服上的Plugin
首先,要在項目的build.gradle里面配置classpath
引用,就拿經典的小刀舉例吧
buildscript {
repositories {
jcenter()
maven { url NEXUS_REPOSITORY_URL}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'
...
}
}
然后在module中build.gradle引用插件plugin
apply plugin: 'com.android.application'
apply plugin: 'com.jakewharton.butterknife'