nexus搭建maven倉庫并上傳sdk的aar包到倉庫

新入職一家公司,初進公司進行一個即時通訊SDK的開發(fā),開發(fā)完成后打成aar包供外部使用,工程中有兩個模塊,aar包只能包含一個模塊,所以這里將兩個模塊打成兩個aar包放到nexus搭建的maven倉庫,模塊之間實現(xiàn)遠程依賴,這樣最后用戶接入一個aar包就實現(xiàn)了sdk的對接,初次接觸這方面的東西,所以寫下這篇文章記錄一下。

一、下載安裝nexus
nexus下載地址(官網(wǎng)下載地址):https://www.sonatype.com/download-oss-sonatype

nexus下載

打開網(wǎng)站后是上面這樣這樣的,填好信息后點擊DOWNLOAD進入系統(tǒng)選擇。

系統(tǒng)選擇

我的是windows系統(tǒng),點擊之后會跳轉到下載頁。

下載

到了下載頁靜靜等著就行,但我沒翻墻,所以苦等半天告訴我被拒絕了,不過方式方法是對的,由于地理因素最終沒走到一起,只有另辟蹊徑啦,看到這里如果你跟我一樣,有一樣的苦衷(不會翻墻),那么你有必要點開這個鏈接,里面有寶貝的喔。鏈接:https://pan.baidu.com/s/1shg-bOxv_tB7jZZVohrk3Q 提取碼:5x44。里面的版本是3.18的,如果你覺得不合適,也可以去網(wǎng)上尋求更好的。

解壓nexus

上面是下載解壓之后的,里面有兩個文件夾,我們記錄下第一文件的目錄路徑,去配置一下系統(tǒng)環(huán)境,不配置的話每次運行nexus都要進入到這個目錄里面挺麻煩的,所以先去配置環(huán)境變量。怎么進到環(huán)境變量配置頁這里就不說了,直接來看配置過程:

新增一個系統(tǒng)變量

在系統(tǒng)變量那一欄點擊新建,取一個自己喜歡的名字,將剛剛記錄的目錄路徑復制到變量值一欄,點擊確定,然后將這個新增的變量加到C盤路徑下。

配置系統(tǒng)變量

配置完成后記得一層一層的點確定返回去,否則不生效喔。接下來打開命令窗口,輸入nexus.exe/install,按回車鍵后顯示Installed service 'nexus'.,至此nexus服務就算安裝好了。

安裝nexus

二、運行nexus服務

通過上面的步驟完成了nexus的下載和安裝,下面讓它跑起來,有兩種方式去啟動nexus。
一種是通過命令行輸入nexus.exe/run,按下回車鍵后是一輪漫長的等待,就像下面這樣:

運行nexus

如果你等到了上圖中紅框里的那句話,那么一切都是值得的,如果沒等到,也不用疑惑不用焦躁,要不,重啟電腦試試,我初次探索的時候試了好多次都沒等到這句話,結果第二天再一運行她就神奇的出現(xiàn)了,有時就是這么奇妙,就像那該死的愛情,突然的出現(xiàn),又突然的消失,咱也不知道咋回事,咱也不敢問。所以當你等到這句話之后,用第一種方法命令行啟動nexus就成功了,不習慣用命令行的就可以用下面這種方法去啟動:

任務管理器

當你安裝了之后,打開任務管理器,點擊服務,列表是按字母排序的,一直往下翻找到nexus后右鍵摟它,然后點擊開始,這樣nexus也就運行起來了。
運行起來后,我們可以通過瀏覽器打開網(wǎng)址http://localhost:8081/nexus/進入到管理后臺,默認的端口號是8081,如果打不開可以看看是不是端口被系統(tǒng)其他進程占用了,如果要更改ip地址和端口號的話,在安裝目錄下的etc文件夾中的nexus-default文件中進行更改,如下圖:

更改IP端口的文件路徑
更改IP端口

改完之后保存一下,重新運行一下nexus就可以了,打開的后臺管理是這樣的:

nexus管理后臺

點擊右上角sign in登錄,一般初次登錄密碼為默認的賬號:admin 密碼 admin123,如果提示密碼錯誤的話,安裝目錄下一個文件記錄了密碼,復制過來就可以,初次登錄之后會讓你改密碼,不知道是不是我改過密碼的緣故,我找不到那個記錄密碼的文件了,這里就不截圖了,那個文件挺好認的,文件名是PASSWORD。
登錄進來之后是下面這樣的:

登錄之后

至此nexus的運行就算成功完成了,下面來看看資源包的上傳過程。

三、上傳資源包

點擊左邊的Browse之后,有一個倉庫列表:

倉庫

可以看到type有三種,proxy、hostde和group,他們的區(qū)別是:

group:是一個倉庫組,可包含hosted和proxy兩種庫,下載時按配置順序從中依次查找;
hosted:一般部署我們自己項目打包的jar,供內(nèi)部人員下載;
proxy:代理遠程倉庫,maven-central是默認maven中央倉庫代理,maven-aliyun是后加的阿里遠程庫代理,通過代理從遠程庫中下載的依賴都會被緩存到nexus的proxy庫中。

這里我是將包放在hosted type下的mvaen-releases倉庫下,初次點進去里面是沒有東西的:

倉庫

可以點擊這兩個地方上傳aar包,配置好相關信息后,點擊upload即可:


上傳資源包

上傳之后就能看到他了,如下:

資源包管理

至此,你上傳的包就能在項目里引用了,不過在介紹引用之前,先介紹一下另一種傳包的方式,在項目工程里去配置好信息,實現(xiàn)一鍵上傳,每次只用修改版本號,這種方式方便很多,下面來看看:

apply plugin:'maven'

//上傳到maven倉庫   
uploadArchives { //新增 ,因為Android Studio gradle 支持maven插件,所以可以添加此task
    configuration = configurations.archives
    repositories {
        mavenDeployer {
            repository(url: 'http://loaclhost:8081/nexus/repository/maven-releases/') {
                authentication(userName: 'admin', password: 'admin123')
            }
            pom.project {
                version '1.0.0' //版本號  
                artifactId '****'  //和前面網(wǎng)站上填寫的一樣
                groupId '*****'  //和前面網(wǎng)站上填寫的一樣
                packaging 'aar' //打aar包就填寫aar
                description 'update describe' //更新描述
            }
        }
    }
}

將上面這段代碼復制到模塊下的build.gradle,注意不是project下的build.gradle,放在最外層,上面的apply plugin:'maven'不要忘了加,url是通過下圖中那樣復制過來的,其余的信息都是自定義,定義成你喜歡的樣子就可以。

復制倉庫url

第二種方式配置好之后,每次發(fā)版更改版本號就行,上傳的話點擊AS右上角Gradle,找到模塊下upload下的uploadArchives 任務,sync之后就會有這個任務,雙擊它就可以了,上傳成功后在管理后臺就能看到上傳的資源包了。

至此,資源包的上傳也就完成了,最后來看看怎么一引用。

四、項目引用

引用分兩步。

第一步就是先得連接上遠程maven倉庫,就是在project下配置遠程倉庫地址:

allprojects {
    repositories {
        google()
        jcenter()

        maven {
            url 'http://localhost:8081/nexus/repository/maven-releases/'  //這個路徑就是Browse下maven-release右邊有一個copy按鈕,復制出來的。
        }

        maven { url "https://jitpack.io" }
    }
}

第二步就是導入依賴,還記的之前配置的groupId、artifactIdversion嗎,項目里引用的格式為:implementation 'groupId:artifactId:version',將引號內(nèi)的內(nèi)容替換成之前配置的信息就完成了資源包得引用。

至此就完成了,用nexus搭建maven倉庫,并上傳資源包,最后項目中引用這么一個過程。由于第一次弄,所以寫這篇文章來記錄一下探索過程,希望能幫到其他人,其中有不當?shù)胤竭€望指正,謝謝。

2020.6.12更新------------------------------------------------------
問題一:每次更新發(fā)版時需要更新版本號,否則上傳不成功,報錯。比如遠程倉庫已經(jīng)有了1.0.0版本,這是如果上傳的版本還是1.0.0就會報如下錯誤:
Return code is: 400, ReasonPhrase: Repository does not allow updating assets: maven-releases.
所以如果在開發(fā)過程中遇到如下錯誤,改個遠程沒有的版本號再試試。

問題二:如上操作過程依賴的aar包,會發(fā)現(xiàn)看不到源碼,點開后顯示為下面這樣:

    public final var cxt: android.app.Activity /* compiled code */

    public final val fm: androidfanx.fragment.app.FragmentManager /* compiled code */

出現(xiàn)上面這種情況的原因是沒有上傳源代碼,依賴aar包后進行反編譯,所以無法看到源碼,也就無法進行debug調(diào)試。
解決這種問題的方法就是在上傳項目aar包的同時將項目源碼上傳,在要上傳的模塊中加上以下代碼,創(chuàng)建上傳源碼的任務,然后執(zhí)行上面上傳aar包的操作就會自動將源碼上傳到遠程,此時依賴后就能看到源碼了。

//上傳源碼
task androidSourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.srcDirs
}

artifacts {
    archives androidSourcesJar
}
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容