Gradle系列之從零搭建Maven私服庫
阿新 • • 發佈:2020-09-23
> 原文發於微信公眾號 jzman-blog,歡迎關注交流。
前面幾篇文章學習了 Gradle 相關知識,Gradle 系列文章如下:
- [Gradle系列之初識Gradle](https://juejin.im/post/6844903874629730318)
- [Gradle之Groovy基礎篇](https://juejin.im/post/6844903876177428494)
- [Gradle系列之構建指令碼基礎](https://juejin.im/post/6844903878199099405)
- [Gradle系列之認識Gradle任務](https://juejin.im/post/6844903879872610311)
- [Gradle系列之Gradle外掛](https://juejin.im/post/6844903881671966727)
- [Gradle系列之Java Gradle外掛](https://juejin.im/post/6844903887078424590)
- [Gradle系列之Android Gradle外掛](https://juejin.im/post/6844903891931234312)
- [Gradle系列之Android Gradle基礎配置](https://juejin.im/post/6844903925804449799)
- [Gradle系列之Android Gradle高階配置](https://juejin.im/post/6844903929583501320)
今天的內容是使用 Nexus Repository Manager 搭建 Maven 私服庫,這樣可以將一些通用的庫專案提取出來供其他專案使用,如工具庫、基本元件庫等,下面將從零開始搭建 Maven 私服庫,
1. 安裝Nexus服務
2. 執行Nexus服務
3. 釋出庫專案
4. 使用庫專案
5. 總結
#### 安裝Nexus服務
在如下地址下載 Nexus 安裝包:
```java
http://www.sonatype.com/download-oss-sonatype
```
選擇適合自己的版本進行下載,如這裡選擇的是 nexus-3.13.0-01-win64,下載完成之後解壓,有兩個資料夾如下:
```java
//nexus服務
nexus-3.13.0-01
//nexus相關配置檔案,如日誌、倉庫、索引、快取等配置檔案
sonatype-work
```
然後開啟 cmd 命令提示符以管理員方法執行,進入 Nexus 服務解壓目錄下的 bin 目錄下執行如下命令來安裝 Nexus 服務,參考如下:
```java
nexus.exe/install
```
執行完成後 Nexus 服務就安裝完成了,安裝 Nexus 服務成功執行結果參考如下:
```java
E:\Gradle\Nexus\nexus-3.13.0-01-win64\nexus-3.13.0-01\bin>nexus.exe/install
Installed service 'nexus'.
```
#### 執行Nexus服務
安裝完成 Nexus 服務之後執行如下命令來執行 Nexus 服務,參考如下:
```java
nexus.exe/run
```
執行該命令會啟動 Nexus 服務,執行成功的關鍵資訊如下:
```java
E:\Gradle\Nexus\nexus-3.13.0-01-win64\nexus-3.13.0-01\bin>nexus.exe/run
Preparing JRE ...
2018-09-10 23:02:21,265+0800 INFO [FelixStartLevel] *SYSTEM org.sonatype.nexus.pax.logging.NexusLogActivator - start
//...
-------------------------------------------------
Started Sonatype Nexus OSS 3.13.0-01
-------------------------------------------------
//...
```
當 Nexus 服務正常啟動之後,可使用如下地址訪問 Nexus 服務,具體如下:
```java
http://localhost:8081/
```
執行結果如下所示:
![在這裡插入圖片描述](https://user-gold-cdn.xitu.io/2019/9/10/16d1bd9ecaefb52a?w=1240&h=569&f=jpeg&s=86416)
#### 建立倉庫
使用預設賬戶名 admin 和預設密碼 admin123 登入成功之後,然後選擇設定(小齒輪),在左側選擇 Security->Users,然後選擇建立使用者 Create local user 輸入相關資訊賬號建立完成,然後使用剛才建立的新賬號登入,然後就可以在自己的賬號下面建立倉庫了,可參考下圖:
![在這裡插入圖片描述](https://user-gold-cdn.xitu.io/2019/9/10/16d1bd9ecba84169?w=867&h=334&f=png&s=53074)
#### 釋出庫專案
倉庫建立好了之後就可以釋出專案到倉庫中了,這裡首先使用 Android Studio 建立一個庫專案 test,然後在其 build.gradle 檔案中配置上傳該庫的 Task,看一下該庫使用的外掛:
```java
//使用Android Library外掛
apply plugin: 'com.android.library'
//使用maven外掛
apply plugin: 'maven'
//Upload Task用於釋出上傳
uploadArchives{
repositories{
mavenDeployer{
//正式釋出倉庫
// repository(url:"http://localhost:8081/repository/jzman-releases/"){
// authentication(userName:"jzman",password:"nexus2410.")
// }
//快照版本的倉庫
snapshotRepository(url:"http://localhost:8081/repository/jzman-snapshots/"){
authentication(userName:"jzman",password:"nexus2410.")
}
pom.project {
//版本號,如果是快照版本,其版本號後面應該新增-SNAPSHOT,否則不能正常識別上傳
version '1.0.0-SNAPSHOT'
//一般寫專案名稱即可
artifactId 'testWidget'
//組別,類似包名,保證唯一性
groupId 'com.manu.test'
//打包格式
packaging 'aar'
//描述
description '測試maven私服搭建'
}
}
}
}
//...
```
配置完用於上傳庫專案的 task 之後,就可以根據需要上傳到之前建立的對應倉庫中了,執行上傳 task 可使用 Android Gradle 提供的快捷方式,如下圖所示:
![在這裡插入圖片描述](https://user-gold-cdn.xitu.io/2019/9/10/16d1bd9ecbeefd70?w=422&h=380&f=png&s=34540)
等待 uploadArchives 執行完畢後對應的庫專案就釋出到對應的倉庫了,下面是釋出到了正式倉庫,如下圖所示:
![在這裡插入圖片描述](https://user-gold-cdn.xitu.io/2019/9/10/16d1bd9eccd36e27?w=635&h=334&f=png&s=31856)
正式版釋出每次必須的更改版本號,否則不能釋出成功,下面是釋出到了快照倉庫,如下圖所示:
![在這裡插入圖片描述](https://user-gold-cdn.xitu.io/2019/9/10/16d1bd9eccff3c13?w=636&h=403&f=png&s=37968)
如果將庫專案釋出到快照倉庫中,可以多次上傳發布,每次不需要修改版本號,它會自己維持在原來版本號的基礎上自增,如 1.0.0-時間戳-1、1.0.0-時間戳-2等,實際使用時還是用版本號 1.0.0-SNAPSHOT,使用時 Maven 會自動下載最新的快照版本,也就是序號最大的快照版本,這種方式便於將庫專案發現的問題及時釋出上去,有助於快速迭代,等到沒有問題就可以釋出正式版本了。
#### 使用庫專案
庫專案是釋出成功之後,就可以在任意的專案中使用這個庫專案了,在專案下的 build.gradle 檔案中配置專案使用的 Maven 倉庫:
```java
//...
allprojects {
repositories {
//...
//配置maven倉庫
maven {
url 'http://localhost:8081/repository/jzman-releases/'
}
}
}
//...
```
然後,在具體的專案中就可以配置對應依賴就可以使用這個庫專案了,配置依賴如下:
```java
dependencies {
//...
//配置依賴庫專案
compile 'com.manu.test:testWidget:1.0.0'
}
```
#### 總結
本篇文章的主要內容就是在本地搭建一個可用的 Maven 私服庫,實際開發中只需根據上述內容將對應的倉庫地址更換為自己公司的倉庫地址即可,其他如 jcenter 庫的搭建也類似,這篇文章的內容就到此為止。
![](https://user-gold-cdn.xitu.io/2019/9/10/16d1bdb0b0c9fa96?w=600&h=472&f=jpeg&s