一、Nexus的環(huán)境搭建
在網(wǎng)上找資料的時候犀斋,發(fā)現(xiàn)各版本的Nexus的文件結(jié)構(gòu)差異很大贝乎,本人使用的是Nexus 3.4,是截止到2017年7月8日的最新版叽粹。
1.下載
下載地址:http://www.sonatype.org/nexus/
NEXUS REPOSITORY MANAGER OSS [開源軟件——免費]
NEXUS REPOSITORY MANAGER -FREE TRIAL [專業(yè)版本——收費]
所以我們選擇OSS即可
選擇相應的平臺览效,我這里是Windows
2.配置
2.1 將下載的ZIP解壓縮,得到兩個文件夾nexus-3.4.0-02
和sonatype-work
虫几,其中第一個文件夾根據(jù)下載的版本不同而不同锤灿。
2.2 將nexus-3.4.0-02
目錄下的bin
添加到環(huán)境變量的Path
中
2.3 打開bin
文件夾下的nexus.vmoptions
辆脸,配置Dkaraf.data
和Djava.io.tmpdir
兩項但校,圖中E:/Program Files/Nexus
是我的zip解壓路徑术裸,注意斜杠方向猾编。其他的配置項我還沒有研究,可自行研究下升敲。
另外在文件夾etc
下還有一個配置文件nexus-default.properties
袍镀,有需要的也可以自行修改nexus-context-path
這個參數(shù),這個是nexus啟動時的根路徑冻晤,默認是“/”。
3.啟動
打開CMD绸吸,接下來執(zhí)行命令:nexus.exe /run
鼻弧。 如果出現(xiàn)以下界面,說明啟動成功
啟動成功后锦茁,訪問:localhost:8081
攘轩。
默認的用戶名和密碼:admin/admin123
component name的一些說明:
- maven-central:maven中央庫,默認從https://repo1.maven.org/maven2/拉取jar
- maven-releases:私庫發(fā)行版jar
- maven-snapshots:私庫快照(調(diào)試版本)jar
- maven-public:倉庫分組码俩,把上面三個倉庫組合在一起對外提供服務(wù)度帮,在本地maven基礎(chǔ)配置settings.xml中使用。
component type的一些說明:
- hosted:類型的倉庫稿存,內(nèi)部項目的發(fā)布倉庫
- releases:內(nèi)部的模塊中release模塊的發(fā)布倉庫
- snapshots:發(fā)布內(nèi)部的SNAPSHOT模塊的倉庫
- 3rd party:第三方依賴的倉庫笨篷,這個數(shù)據(jù)通常是由內(nèi)部人員自行下載之后發(fā)布上去
- proxy:類型的倉庫,從遠程中央倉庫中尋找數(shù)據(jù)的倉庫
二瓣履、Android Studio 的Module上傳到Maven私服
我要操作的項目有兩個Module:
- jbottomtabbar:功能Module率翅,要上傳到maven作為公共倉庫的就是它
- app:默認Module,用來調(diào)用jbottomtabbar
1.編寫腳本
首先在目標module(我這里就是jbottomtabbar)目錄下創(chuàng)建一個用于上傳的gradle文件袖迎,我這里叫nexus-push.gradle
冕臭。
apply plugin: 'maven'
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
artifacts {
archives androidSourcesJar
}
//任務(wù)名
uploadArchives {
repositories {
mavenDeployer {
//這里的url是nexus中maven-releases的路徑,可以點擊copy按鈕查看復制
repository(url: "http://localhost:8081/repository/maven-releases/") {
// nexus賬號的用戶名和密碼燕锥,我這里沒用默認的admin
authentication(userName: "jcking", password: "jcking123")
}
// 下面這三項pom參數(shù)辜贵,在調(diào)用的時候是這個樣子 : compile 'com.jcking.jbottomtabbar:jbottomtabbar:0.0.1'
// library的包名
pom.groupId = 'com.jcking.jbottomtabbar'
// library的項目名
pom.artifactId = 'jbottomtabbar'
// library的版本號
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'
}
}
}
}
}
}
然后在目標mudule的build.gradle
上進行調(diào)用
apply from: './nexus-push.gradle'
2.上傳項目
好了,腳本基本完成了归形,下面可以運行一下了托慨。記得上面的任務(wù)名么?uploadArchives
暇榴,當然你想自己重命名也是可以的榴芳。在Android Studio的Terminal面板執(zhí)行如下命令:
// windows
gradlew uploadArchives
// macOS
./gradlew uploadArchives
上傳成功你會看到類似:
然后我們就可以在nexus看到我們上傳的項目了
3.調(diào)用依賴
既然已經(jīng)上傳到maven私庫了嗡靡,那么我們就可以在本地項目調(diào)用了。首先在項目根目錄下的build.gradle
文件添加倉庫url地址窟感。
allprojects {
repositories {
jcenter()
maven {
url "http://localhost:8081/repository/maven-releases/"
}
}
}
然后在需要的module(我這里是app)的build.gradle
文件添加依賴
compile 'com.jcking.jbottomtabbar:jbottomtabbar:0.0.1'
三讨彼、將項目發(fā)布到JCenter
JCenter倉庫是由bintray提供并維護,這個倉庫是類似Maven中央倉庫柿祈。只要你能連上Internet哈误,你就可以通過Gradle或者Maven去下載倉庫中的依賴包到你自己的項目中。JCenter現(xiàn)在是Android Studio中repositories的默認節(jié)點了躏嚎,之前是Maven的蜜自,不過JCenter是兼容Maven的,所以放心使用卢佣。
1.申請Bintray賬號
到Bintray官網(wǎng)去注冊一個就好重荠,也可以用github賬號登錄。注意虚茶,這里有大坑戈鲁,Bintray注冊有兩種類型:
- Sign up to a Free Trial(收費專業(yè)版,30天免費試用)
- Sign up to an Open Source account(開源免費版)
通常用的都是免費版嘹叫,當然如果有需求可以選第一種婆殿。當然我是用的第二種,第一種的坑我沒有填上罩扇。具體請看這篇文章婆芦,我遇到了完全同樣的坑,這篇文章幫我解決的喂饥,在此謝過消约。
2.編寫腳本
首先在項目的build.gradle
中增加bintray需要的依賴。
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.3.1'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
在目標module的目錄下創(chuàng)建一個用于上傳的gradle文件员帮,我這里叫jcenter-push.gradle
荆陆。
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'
def siteUrl = 'https://github.com/aoshiwenrou/NewsWithKotlin' // 項目的主頁
def gitUrl = 'https://github.com/aoshiwenrou/NewsWithKotlin.git' // Git倉庫的url
group = 'com.jcking.jbottomtabbar' // 一般寫唯一的包名
version = '0.0.1' // 版本號
install {
repositories.mavenInstaller {
pom {
project {
packaging 'aar'
name 'bottom tabbar for android' //項目描述
url siteUrl
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
developers {
developer { //填寫的一些基本信息
id 'jcking'
name 'Jcking.Wang'
email '380488695@qq.com'
}
}
scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
}
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
artifacts {
archives androidSourcesJar
}
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
user = properties.getProperty("bintray.user")
key = properties.getProperty("bintray.apikey")
configurations = ['archives']
pkg {
version {
name = '0.0.1'
desc = 'bottom tabbar bar 0.0.1'
}
repo = 'maven' // bintray上創(chuàng)建的倉庫名,我這用的maven
name = 'bottom-tabbar' //發(fā)布到JCenter上的項目名字
licenses = ['Apache-2.0']
vcsUrl = gitUrl
publish = true
}
}
配置好上述后需要在你的項目的根目錄上的local.properties
文件里(一般這文件需gitignore集侯,防止泄露賬戶信息)配置你的bintray賬號信息被啼,bintray.user為你的用戶名,bintray.apikey為你的賬戶的apikey棠枉,可以點擊進入你的賬戶信息里再點擊Edit
即有查看API Key的選項浓体,把他復制下來。
然后在目標mudule的build.gradle
上進行調(diào)用辈讶。
//apply from: './nexus-push.gradle' 這個可以注掉了命浴,不然會沖突
apply from: './jcenter-push.gradle'
接下來在Android Studio的Terminal面板執(zhí)行命令:
// windows
gradlew bintrayUpload
// macOS
./gradlew bintrayUpload
成功之后會看到類似這樣的
成功后,可以在bintray網(wǎng)站上的自己的Maven倉庫中查看自己的發(fā)布的項目:
3.發(fā)布項目
將你的bintray下的Maven倉庫中的項目include到JCenter倉庫中,就點擊一個按鈕即可生闲。具體就是媳溺,點擊進入你剛剛上傳項目package的詳細頁當中,在右下角有一個Add to JCenter按鈕碍讯,點擊它悬蔽,然后寫上一些message,最后點擊send按鈕捉兴,就完事了国葬。
寫在最后
到這里轮锥,關(guān)于在Android Studio上通過Nexus搭建Maven私服并上傳JCenter的全部內(nèi)容基本就到這了。內(nèi)容不是很多好啰,但是坑真的多互捌,折騰了一整天旬盯,我成功的流程全在上面熊昌,按照這個流程過女淑,基本沒問題了。如果有其他問題氮趋,歡迎留言討論伍派。
參考:
Android Studio發(fā)布項目到Maven倉庫
利用bintray-release插件上傳到Bintray- HTTP/1.1 404 Not Found (message:Repo 'maven' was not found) 問題解決