Maven私有服務(wù)器搭建與Android Studio Library管理 (Maven Server Creation And Android Library Management)

此工程包含了與這篇文章相應(yīng)的demo實(shí)例同窘。方便你馬上上手锈至。

(初版文檔搞隐,文檔內(nèi)容需要隨時(shí)更改和補(bǔ)充)

引言 公司需要有自己的library倉(cāng)庫(kù)驹愚,避免重復(fù)造車輪子,方便需要時(shí)隨時(shí)使用劣纲。一個(gè)方法就是建立自己的私有repository逢捺。本文檔教你如下內(nèi)容:

  • 如何搭建Nexus Maven私服
  • 在Android Studio中上傳私有l(wèi)ibrary
  • 使用私有l(wèi)ibrary

Nexus下載和安裝(如果已經(jīng)安裝好服務(wù)器,省略此步驟) 本地倉(cāng)庫(kù)需要有自己的倉(cāng)庫(kù)管理工具癞季。Sonatype Nexus和Artifactory都是不錯(cuò)的選擇劫瞳。本文選擇Sonatype Nexus。下載地址為: https://www.sonatype.com/download-oss-sonatype

image001.png

請(qǐng)根據(jù)你的操作系統(tǒng)進(jìn)行選擇绷柒。下載解壓后柠新,你可以看到如下的文件夾:

image002.png

在Console中(windows下為cmd),鍵入:

Windows:
將nexus.exe設(shè)置成以管理員身份運(yùn)行
cd {nexus解壓后目錄/nexus-版本號(hào)/bin/}
nexus.exe /install
nexus.exe /start
Mac:
cd {nexus解壓后目錄/nexus-版本號(hào)/bin/}
./nexus run

如果有疑問(wèn)請(qǐng)參考: http://books.sonatype.com/nexus-book/reference3/install.html#service-windows

打開(kāi)私服管理器 在瀏覽器中辉巡,輸入http://localhost:8081,如果一切順利蕊退,你可以看到Nexus Repository Manager管理頁(yè)面郊楣。

Tips:你也可以使用花生殼等工具憔恳,將其部署到外網(wǎng)中去(通過(guò)內(nèi)網(wǎng)映射),這樣你就可以用外網(wǎng)地址訪問(wèn)私服服務(wù)器了净蚤。

創(chuàng)建私有倉(cāng)庫(kù) 私服管理頁(yè)面中钥组,你首先會(huì)進(jìn)入guest賬戶頁(yè)面,這個(gè)賬戶你還不能新建repository今瀑。這里點(diǎn)擊右上角的sign in

image003.png

輸入管理員密碼

image004.png

默認(rèn)為admin,密碼admin123程梦。登陸后,點(diǎn)擊設(shè)置按鈕


image005.png

橘荠,點(diǎn)擊Repository-Repository-Create Repository

image006.png

選擇maven2(hosted)類型屿附。當(dāng)然,你也可以選擇別的類型的repository哥童。這里選擇maven2是為了和android studio的maven插件配合使用挺份,也是推薦的選擇。

image007.png

輸入repository的名字贮懈。Deployment policy選擇Allow redeploy匀泊,否則library的提交就只能進(jìn)行一次,不能重復(fù)提交朵你。點(diǎn)擊Create repository各聘。

image008.png

至此私有Maven庫(kù)就創(chuàng)建完畢了。

創(chuàng)建私有倉(cāng)庫(kù) Library的創(chuàng)建是為了解決一個(gè)實(shí)際問(wèn)題抡医,可以完全是自己新建的項(xiàng)目躲因,可以來(lái)自局域網(wǎng)的svn,也可以是在github上委托的項(xiàng)目魂拦。

Tips: 如何github上的項(xiàng)目創(chuàng)建毛仪,請(qǐng)看 https://www.londonappdeveloper.com/how-to-use-git-hub-with-android-studio/。

  • 首先芯勘,我們?cè)贏ndroid Studio中新建一個(gè)project箱靴,點(diǎn)擊File-New-New Project。
  • 新建一個(gè)Module荷愕,選擇Android Library衡怀,指定Library Name,點(diǎn)擊Finish安疗。
  • 根據(jù)項(xiàng)目需要抛杨,編寫(xiě)Library Module。對(duì)于公司編寫(xiě)的library而言荐类,這里應(yīng)該執(zhí)行版本管理怖现,利用svn或者git等等。

Tips:library完成了某一milestone,或者進(jìn)行了一遍迭代時(shí)屈嗤,才應(yīng)該上傳代碼到maven庫(kù)潘拨。請(qǐng)注意區(qū)分這兩種不同的提交。

  • 為了gradle文件的模塊性饶号,新建nexus_maven.gradle文件铁追,輸入如下代碼:
apply plugin: 'maven'

task androidJavadocs(type: Javadoc) {    
  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    
  archives androidJavadocsJar
}

uploadArchives {    
  repositories {        
    mavenDeployer {            
      repository(url: "YourMavenRepositoryUrl") {                            
        authentication(userName: "admin", password: "admin123")            
      }            
      pom.project {                
        name 'YourProjectName'                
        version '1.0.0'                
        artifactId 'yourartifactid'                
        groupId 'com.company'                
        packaging 'aar'                
        description 'Your Project Description'            
      }       
    }    
  }
}

這段代碼首先引用maven插件;然后定義了2個(gè)任務(wù):androidSourcesJarandroidJavadocsJar茫船,這兩個(gè)任務(wù)分別用于對(duì)Java sources打包和Java doc進(jìn)行打包琅束;接著我們對(duì)uploadArchives.repositories閉包進(jìn)行一些配置,包括倉(cāng)庫(kù)的url地址算谈,比如http://localhost:8081/repository/android-lib涩禀,上傳所需的用戶名和密碼,以及pom屬性濒生。

  • 在module的build.gradle文件最后添加
apply from: './nexus_maven.gradle'

這樣埋泵,代碼就可以準(zhǔn)備上傳到Maven私服了。

上傳本地代碼到Maven庫(kù)

點(diǎn)擊Android Studio右側(cè)的Gradle projects罪治。雙擊uploadArchives上傳代碼丽声。在Run Console中,查看是否成功觉义。在Maven私服后臺(tái)中雁社,點(diǎn)擊Browse server contents-Browse-Components,你應(yīng)該可以看到剛才上傳的repository晒骇。

Tips:一般而言霉撵,maven庫(kù)的提交者維護(hù)著整個(gè)library的版本,不應(yīng)該由library的開(kāi)發(fā)者執(zhí)行洪囤,repository url用localhost應(yīng)該已經(jīng)足夠了徒坡。

image009.png

在Android Studio工程中使用某一maven庫(kù)

  • 打開(kāi)項(xiàng)目的根build.gradle文件,聲明需要使用的私服地址
  allprojects {    
    repositories {        
      jcenter()        
      maven { 
        url 'http://localhost:8081/nexus/content/repositories/android-lib/' 
      }        
    }
  }

  • 在對(duì)應(yīng)模塊的build.gradle文件中瘤缩,添加項(xiàng)目依賴
compile '{groupId}:{artifactId}:{version}@{packaging}'

這里的組成和提交的pom.project的信息有關(guān)喇完,比如:

  <dependency>
    <groupId>com.vic</groupId>
    <artifactId>myrecyclerview</artifactId>
    <version>1.2.0</version>
    <type>aar</type>
  </dependency>

關(guān)于Gradle緩存

在執(zhí)行過(guò)一次Gradle的同步之后,Gradle會(huì)把對(duì)應(yīng)的Library的文件下載在本地剥啤,之后會(huì)直接使用锦溪。所以當(dāng)我們刪除舊的Library,用同樣的pom.project信息重新上傳一個(gè)新的Library時(shí)府怯,執(zhí)行Gradle同步刻诊,并不會(huì)更新最新的Library下來(lái)。這個(gè)時(shí)候可以到倉(cāng)庫(kù)存儲(chǔ)路徑下把對(duì)應(yīng)的Library文件刪除牺丙。 一般來(lái)說(shuō)则涯, Mac系統(tǒng)默認(rèn)下載到:/Users/(用戶名)/.gradle/caches/modules-2/files-2.1 Windows系統(tǒng)默認(rèn)下載到:C:\Users\(用戶名)\.gradle\caches\modules-2\files-2.1

參考文獻(xiàn)

1 用AndroidStudio發(fā)布Libs到Bintray jCenter
http://www.cnblogs.com/jacksBlogs/p/5622948.html

2 巧用 GitHub 創(chuàng)建自己的私人 Maven 倉(cāng)庫(kù),及一些開(kāi)發(fā)Library的建議
http://www.reibang.com/p/d2fae8c7d93f

3 使用 Android Studio + Nexus 搭建 Maven 私服 http://www.reibang.com/p/f815a05c627e
http://www.reibang.com/p/a8aac4d95214

4 Nexus Repository Manager 3.2 Documentation http://books.sonatype.com/nexus-book/reference3/install.html#service-windows

5 Android Studio發(fā)布項(xiàng)目到Maven倉(cāng)庫(kù) http://blog.csdn.net/h_zhang/article/details/51558800

6 在Android Studio中發(fā)布Library到j(luò)Center公共倉(cāng)庫(kù) https://yangbo.tech/2015/10/19/distribute-android-library-to-jcetner/

7 擁抱 Android Studio 之四:Maven 倉(cāng)庫(kù)使用與私有倉(cāng)庫(kù)搭建 http://blog.bugtags.com/2016/01/27/embrace-android-studio-maven-deploy/#簡(jiǎn)介

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市粟判,隨后出現(xiàn)的幾起案子肖揣,更是在濱河造成了極大的恐慌,老刑警劉巖浮入,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異羊异,居然都是意外死亡事秀,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門野舶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)易迹,“玉大人,你說(shuō)我怎么就攤上這事平道《糜” “怎么了巷屿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵丸冕,是天一觀的道長(zhǎng)丙躏。 經(jīng)常有香客問(wèn)我眉抬,道長(zhǎng)遍略,這世上最難降的妖魔是什么第焰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任屹蚊,我火速辦了婚禮末捣,結(jié)果婚禮上诽嘉,老公的妹妹穿的比我還像新娘蔚出。我一直安慰自己,他們只是感情好虫腋,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布骄酗。 她就那樣靜靜地躺著,像睡著了一般悦冀。 火紅的嫁衣襯著肌膚如雪趋翻。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,696評(píng)論 1 312
  • 那天雏门,我揣著相機(jī)與錄音嘿歌,去河邊找鬼。 笑死茁影,一個(gè)胖子當(dāng)著我的面吹牛宙帝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播募闲,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼步脓,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起靴患,我...
    開(kāi)封第一講書(shū)人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤仍侥,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后鸳君,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體农渊,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年或颊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了砸紊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡囱挑,死狀恐怖醉顽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情平挑,我是刑警寧澤游添,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站通熄,受9級(jí)特大地震影響唆涝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜棠隐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一石抡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧助泽,春花似錦啰扛、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至诫睬,卻和暖如春煞茫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背摄凡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工续徽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人亲澡。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓钦扭,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親床绪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子客情,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,323評(píng)論 25 707
  • 首先萬(wàn)惡的電子網(wǎng)絡(luò)其弊,我在心里1給你一萬(wàn)個(gè)白眼!0蛘梭伐! 然后我很生氣,為什么我自己不認(rèn)真把寫(xiě)好的文章儲(chǔ)存仰担,而是不小心把...
    億佯閱讀 161評(píng)論 0 0
  • 董家溝村歷史久遠(yuǎn)糊识,人才輩出,其中的好漢董老園摔蓝,因行俠仗義技掏,扶危濟(jì)貧,而深得村民的推崇與愛(ài)戴项鬼,他的故事歷時(shí)長(zhǎng)...
    wangfengqun閱讀 533評(píng)論 0 0
  • 化妝不僅僅關(guān)乎美不美的問(wèn)題在某一層面上來(lái)說(shuō)也是尊不尊重主人的問(wèn)題化妝品化妝補(bǔ)妝不可在公眾場(chǎng)合補(bǔ)妝,最好在洗手間上補(bǔ)...
    tang小米閱讀 202評(píng)論 2 1
  • 雨劲阎, 濕透了誰(shuí)的衣襟绘盟? 千百年來(lái), 有誰(shuí)在雨中哭泣悯仙? 江南的煙雨龄毡, 莫名的情緒, 這里锡垄, 沒(méi)有沦零, 只有冰冷的氣息。...
    想飛的樹(shù)不如草閱讀 137評(píng)論 0 1