淺談android nexus私服的使用
先嘮叨幾句啊,由于公司私服已經(jīng)搭好了我就不費(fèi)那勁琢磨搭建私服的事了,直接開擼上傳lib。下圖是我放組件庫的地方,本來想一個module拉出一個項目來維護(hù),后來想想實(shí)在是麻煩,同時維護(hù)多個庫就要down多個庫下來,于是就統(tǒng)一管理了。當(dāng)然統(tǒng)一維護(hù)module多了自然會影響編譯的速度,可以在settings.gradle 里將不編譯的module注釋掉就可以了?,F(xiàn)在就有圖片選擇、表情、輸入框、星星、視頻錄制、裁切等七七八八個庫,至于后面組件庫多了可能會分類按類型拉出幾個項目來管理,要不版本控制也是個麻煩事。目前就是升級一個module在git上打個tag標(biāo)簽。大家有啥好的建議歡迎留言哈。
Nexus是一個基于maven的倉庫管理的社區(qū)項目.主要的使用場景就是可以在局域網(wǎng)搭建一個maven私服,用來部署第三方公共構(gòu)件或者作為遠(yuǎn)程倉庫在該局域網(wǎng)的一個代理.簡單舉幾個例子就是:
1.第三方Jar包可以放在nexus上,項目可以直接通過Url和路徑配置直接引用.方便進(jìn)行統(tǒng)一管理.
2.同時有多個項目在開發(fā)的時候,一些共用基礎(chǔ)模塊可以單獨(dú)抽取到nexus上,需要用的項目直接從nexus上拉取就行(基礎(chǔ)模塊的實(shí)現(xiàn),維護(hù)和部署可以交給專門的人員,其他項目不用關(guān)心代碼實(shí)現(xiàn),這樣也可以達(dá)到保證核心代碼不泄露).
3.一些封閉開發(fā)的過程中開發(fā)機(jī)是不能上公網(wǎng)的,所以連接central repository和下載jar就比較麻煩,這時就可以用nexus搭建起來一個介于公網(wǎng)和局域網(wǎng)之間的橋梁.
接下來就簡單介紹一下nexus的搭建以及在android項目中使用nexus的方式.

項目展示.png
發(fā)布Library到私服
我們就以functionbar這個組件庫為例吧
配置nexus賬戶信息
因為Nexus相關(guān)參數(shù)是固定的,包含倉庫地址、用戶名和密碼,從安全性考慮我們把這些參數(shù)寫到gradle的Global配置中,目錄是C:\Users(用戶名).gradle\gradle.properties
NEXUS_USERNAME=username NEXUS_PASSWORD=password NEXUS_REPOSITORY_URL=http://xxx/nexus/repository/maven-releases/
配置pom參數(shù)
項目根目錄下的gradle.properties中添加如下pom參數(shù)
//依賴庫名稱 POM_NAME=functionbar //版本號 POM_VERSION=1.0.1 //類別 POM_ARTIFACTID=utils //組id POM_GROUPID=com.app //打包類型 POM_PACKAGING=aar
引入gradle腳本
在library的build.gradle文件末尾加上如下引用,當(dāng)然這個文件需要創(chuàng)建放到項目根路徑,源碼在腳本解讀中
apply from: '../nexus_upload.gradle'
這個nexus_upload.gradle腳本包含生成java-source和java-doc,如果注釋不完整可以注釋掉腳本里的androidJavadocsJar調(diào)用,避免影響上傳。
發(fā)布
雙擊右側(cè)gradle task中的uploadArchives,編譯并上傳library

up.png
等待一會出現(xiàn)Success字樣,證明已經(jīng)上傳成功

success.png
最后我們?nèi)exus上驗證下,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必需的參數(shù)
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一樣的只不過需要提一點(diǎn),腳本信息需要做一些刪減,只用到以下這些。
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
//倉庫地址
repository(url: NEXUS_REPOSITORY_URL) {
//私服賬戶信息
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
//pom必需的參數(shù)
pom.project {
name POM_NAME
version POM_VERSION
artifactId POM_ARTIFACTID
groupId POM_GROUPID
packaging POM_PACKAGING
}
}
}
}
使用私服上的Plugin
首先,要在項目的build.gradle里面配置classpath引用,就拿經(jīng)典的小刀舉例吧
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'
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android?App實(shí)現(xiàn)閃屏頁廣告圖的全屏顯示實(shí)例
這篇文章主要為大家介紹了Android?App實(shí)現(xiàn)閃屏頁廣告圖的全屏顯示實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
獲取Android手機(jī)中所有短信的實(shí)現(xiàn)代碼
這篇文章主要介紹了獲取Android手機(jī)中所有短信的實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-08-08
Android studio實(shí)現(xiàn)簡易的計算器功能
這篇文章主要為大家詳細(xì)介紹了Android studio實(shí)現(xiàn)簡易的計算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05
Android使用TypeFace設(shè)置TextView的文字字體
這篇文章主要介紹了Android使用TypeFace設(shè)置TextView的文字字體的方法,幫助大家更好的利用Android開發(fā),感興趣的朋友可以了解下2021-01-01
Android Studio / IDEA kotlin 顯示 var 真實(shí)類型操作
這篇文章主要介紹了Android Studio / IDEA kotlin 顯示 var 真實(shí)類型操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Android自定義控件ViewFipper實(shí)現(xiàn)豎直跑馬燈效果
這篇文章主要為大家詳細(xì)介紹了Android自定義控件ViewFipper實(shí)現(xiàn)豎直跑馬燈效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
Android類加載ClassLoader雙親委托機(jī)制詳解
這篇文章主要為大家介紹了Android類加載ClassLoader雙親委托機(jī)制詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07

