AndroidStudio+Nexus3.x搭建Maven私服

DeMonnnnnn發表於2018-09-06

環境

文章的執行環境為:
AndroidStudio版本:3.1.4
Gradle版本:3.1.4
Nexus版本:3.13.0

前言

dependencies {
     ...
    implementation 'org.litepal.android:core:2.0.0' //資料庫
    implementation 'org.greenrobot:eventbus:3.1.1'
    ...
}

作為一名Android開發者,像上面一行程式碼匯入一個框架的方法,肯定很熟悉。
這些框架的程式碼就放在作者的Maven倉庫裡面,然後給我們遠端引入到自己的專案裡面。
現在使用GitHub+jitpack搭建打包倉庫的也是很常見,就是jitpack將GitHub中配置好的程式碼打包到自己的倉庫幫使用者代理。詳情見:GitHub+jitpack生成自己的Compile依賴

Maven本地倉庫

由於AndroidStudio(AS)自帶Maven倉庫打包外掛,所以無需任何環境和工具,我們也可以用AS打包程式碼到本地,然後直接本地引用即可。

打包程式碼

我們在需要打包的Library的build.gradle中新增如下程式碼:

apply plugin: 'maven' //maven倉庫外掛

....

uploadArchives {
    repositories.mavenDeployer {
        //打包的路徑
        repository(url: 'file://D:/nexus-3.13.0/Repositories') 
        pom.project {
            version '1.0' //版本號,多次打包不能一致
            artifactId 'PrintHello' //識別Id,與專案名稱一致即可
            groupId 'com.demon' //組號,類似包名
            packaging 'aar' //打包格式
            description 'PrintHello dependences lib' //描述
        }
    }
}

然後如下圖操作,打包完成後,我們會在打包的路徑看到生成的檔案。
這裡寫圖片描述

引入程式碼

首先在工程的根目錄的build.gradle中新增:

allprojects {
    repositories {
        ...
        //上面打包的路徑
        maven(){url 'file://D:/nexus-3.13.0/Repositories'}
        ...
    }
}

然後在專案的build.gradle中新增:

dependencies {
    ...
    //格式:groupId:artifactId:version
    implementation 'com.demon:PrintHello:1.0'
    ...
}

點選Sync now,如果成功,則引入成功。

Nexus3.X搭建私服倉庫

上面的程式碼在本地,只能自己使用。要給別人使用,我們就需要搭建一個遠端倉庫。
下面介紹如何本地使用nexus3.X搭建私服倉庫(也可以搭建在伺服器上),並打包程式碼和引用。
Nexus下載:https://www.sonatype.com/download-oss-sonatype
安裝配置如下:Windows下安裝Nexus OSS 3.4.0

配置Nexus

將下載的nexus.xxx.zip檔案解壓到自定義目錄下即可。

開啟…/etc/nexus-default.properties檔案,配置Nexus埠和上下文路徑。

  1. application-host : Nexus服務監聽的主機
  2. application-port: Nexus服務監聽的埠,
  3. nexus-context-path : Nexus服務的上下文路徑

我的配置如下:

# Jetty section
application-port=8081
application-host=127.0.0.1
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
nexus-context-path=/

# Nexus section
nexus-edition=nexus-pro-edition
nexus-features=\
 nexus-pro-feature

開啟…/bin/nexus.vmoptions檔案,執行環境配置。
可以配置執行時的最大堆、最小堆等,可以根據個人的電腦以及需要修改。
此處我沒有做任何修改。

安裝Nexus

在Nexus的bin檔案下,執行管理員的cmd。

  1. 啟動nexus服務:nexus.exe /run
  2. 安裝nexus服務:nexus.exe /install
  3. 啟動服務:net start nexus

如果需要解除安裝Nexus:nexus.exe /uninstall
關閉服務:net stop nexus

登陸Nexus

瀏覽器輸入:127.0.0.1:8081 (若修改了上下文路徑,後面需要加上該路徑)
點選Sign in 進行登陸,nexus預設的使用者名稱是admin,密碼為admin123

登陸成功便能看見一些預設的倉庫。
這裡寫圖片描述

倉庫名 作用
hosted(宿主倉庫庫) 存放本公司開發的jar包(正式版本、測試版本)
proxy(代理倉庫) 代理中央倉庫、Apache下測試版本的jar包
group(組倉庫) 使用時連線組倉庫,包含Hosted(宿主倉庫)和Proxy(代理倉庫)
virtual (虛擬倉庫) 基本用不到,重點關注上面三個倉庫的使用

建立倉庫

這裡寫圖片描述

選擇Maven2(hosted)

這裡寫圖片描述

建立倉庫成功後,看到倉庫可以點選Copy複製倉庫路徑。

打包程式碼

我們在需要打包的Library的build.gradle中新增如下程式碼:

apply plugin: 'maven' //maven倉庫外掛
....
uploadArchives {
    configuration = configurations.archives
    repositories {
        mavenDeployer {
            //Copy複製倉庫路徑
            repository(url: 'http://127.0.0.1:8081/repository/Test/') {
                //你Nexus的賬戶密碼
                authentication(userName: 'admin', password: '123456')
            }
            pom.project {
                version '1.0.0'
                artifactId 'PrintHello'
                groupId 'com.demon'
                packaging 'aar'
                description 'PrintHello dependences lib'
            }
        }
    }
}

可以看見跟本地打包相比就是修改了倉庫的路徑,和新增倉庫的認證資訊。
如上本地打包,在Gradle中執行uploadArchives即可。

打包成功後,如下圖能打包成功後生成的檔案。
這裡寫圖片描述

引入程式碼

首先在工程的根目錄的build.gradle中新增:

allprojects {
    repositories {
        ...
        //Copy複製倉庫路徑
        maven(){url 'http://127.0.0.1:8081/repository/Test/'}
    }
}

然後在專案的build.gradle中新增:

dependencies {
    ...
    //格式:groupId:artifactId:version
    implementation 'com.demon:PrintHello:1.0.0'
    ...
}

點選Sync now,如果成功,則引入成功。
跟本地引入,除倉庫路徑需要修改外,其餘完全一致。

參考

Windows下安裝Nexus OSS 3.4.0
Android Studio 教你5分鐘搭建和使用Maven倉庫

相關文章