利用nexus搭建私有maven庫管理內(nèi)部lib,get!

1、本文簡介

很多時候,我們都是compile的aar或者jar,或者項目內(nèi)的module。但是有沒有發(fā)現(xiàn)不方便?如果某個人改了公共庫里的代碼,要么把aar或者jar重新拷貝新的發(fā)送過來。如果是module似乎沒事,直接在module改動即可,然后從git上繼續(xù)pull代碼即可。但是如果多個項目怎么辦,都引用同一個公共lib,此時還是得多個項目都改動module。本文就是介紹多人多項目的情況下,如何共同使用同一個lib,做到一處改動,多項目同時可更新。鑒于本人在發(fā)表文章前一天剛學習如何搭建,如有紕漏,望指正!

2、搭建nexus環(huán)境

下載鏈接: http://www.sonatype.org/nexus/go/(似乎官網(wǎng)下載不了,臉大的可以試試)
http://download.csdn.net/detail/u010716109/9497645
下載完后,進行解壓,PS:去官網(wǎng)下載的童鞋請下載nexus-2.13.0-01-bundle.tar.zip,把解壓的文件放在你想要防止的目錄

1.配置環(huán)境參數(shù)
在\bin\jsw\conf目錄下,打開wrapper.conf文件,ctrl+F查找command單詞,一共有2處是下面寫法。下面是更改后的寫法,童鞋們把下面路徑換成自己java jdk目錄。
(1)Java Application
wrapper.java.command=C:\Java\jdk1.8.0_45\bin\java.exe
(2) Set the JVM executable
(modify this to absolute path if you need a Java that is not on the OS path)
wrapper.java.command=C:\Java\jdk1.8.0_45\bin\java.exe
2.打開cmd。
cd 文件名,直到跳轉(zhuǎn)到你解壓文件下的bin目錄。(小技巧:文件名敲其中幾個字母,按tab鍵,直接補全,這樣不用敲復(fù)雜的文件路徑)


這里寫圖片描述

(1)輸入nexus install,顯示安裝成功wrapper | nexus installed.
(2)輸入nexus start ,成功會顯示下面內(nèi)容。如果失敗,顯示failed to start,那么需要看一下8081端口是否被占用或者剛才配置java jdk的路徑是否正確

wrapper  | Starting the nexus service...
wrapper  | Waiting to start...
wrapper  | Waiting to start...
wrapper  | Waiting to start...
wrapper  | Waiting to start...
wrapper  | Waiting to start...
wrapper  | nexus started.

現(xiàn)在安裝配置完成,可以進行下一步了。
3.啟動nexus本地站點127.0.0.1:8081/nexus,如果打不開,則需要查看8081端口是否被占用。


這里寫圖片描述

4.建立倉庫
(1)點擊右上角的log in,然后輸入賬號admin,密碼admin123,登陸完成后點擊左側(cè)導(dǎo)航欄的Repositories,點擊中間頁的add按鈕,選擇hosted倉庫。如下圖。


這里寫圖片描述

(2)填寫下面紅框內(nèi)容,點擊save。倉庫名字和id我是寫的一樣。
這里寫圖片描述

(3)此時你可以在上面?zhèn)}庫名單里找到自己新建的倉庫。由于我在默認倉庫組里創(chuàng)建(public Repositories分組下點擊的add),所以倉庫的groupid是public。(這個很重要一會要用到)

(4)打開你的lib項目,在對應(yīng)的module里的build.gradle加入下面代碼。
需要注意的是更改ttshop為你自己的倉庫名,根據(jù)lib的類型選擇packaging是aar還是jar包。 groupId 和artifactId 就是剛才的站點里顯示的名字,找到并且填寫。

apply plugin: 'com.android.library'
apply plugin: 'maven'
apply plugin: 'signing'
signing {
    required { has("release") && gradle.taskGraph.hasTask("uploadArchives") }
    sign configurations.archives
}

uploadArchives {
    configuration = configurations.archives
    repositories.mavenDeployer {
        beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
        repository(url: 'http://127.0.0.1:8081/nexus/content/repositories/ttshop/') {//倉庫地址
            authentication(userName: "admin",//用戶名
                    password: "admin123")//密碼
        }

        pom.project {
            name 'ttshop'
            packaging 'aar'
            description 'none'
            url 'http://127.0.0.1:8081/nexus/content/repositories/ttshop/'//倉庫地址
            groupId "public"
            artifactId "ttshop" //LibA
            version 1.0
        }
    }
}
android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
}

(5)在android studio里的terminal里執(zhí)行g(shù)radlew tasks指令(WIN下),編譯lib,生成aar。PS:其它系統(tǒng)執(zhí)行./gradlew tasks指令。接著gradlew uploadArchives指令,上傳文件到倉庫里。這個指令執(zhí)行過程中,可能提示下載gradle文件,下載需要比較久,我這邊花了10多分鐘。


這里寫圖片描述

然后上傳成功后,我們在nexus的安裝目錄下E:\english_soft_maven_tool\sonatype-work\nexus\storage可以找你倉庫組,比如我的是public,然后在public里打開會看到ttshop的文件夾,里面會有上傳的文件。下圖是在nexus站點里查看的截圖。


這里寫圖片描述

自此,搭建環(huán)境以及上傳保存文件完成。下面有些小福利贈送,請查看周邊環(huán)境后,再往下翻動!高能預(yù)警!

這里寫圖片描述

3、具體使用方式

在要引用庫的項目里的項目build.gradle里加入maven聲明。不是app目錄下的build.gradle哦。127.0.0.1可以改成你發(fā)布maven私有庫的ip地址,這樣其它機器可以同步倉庫里的lib

allprojects {
    repositories {
        jcenter()
        mavenCentral()
        //這里加入自己的maven地址,其它機器要輸入正確的IP地址,本地就用127.0.0.1
        maven {
            url "http://127.0.0.1:8081/nexus/content/repositories/ttshop/"
        }
    }
}

然后在app目錄下的build.gradle目錄加入compile 'public:ttshop:1.0@aar'的應(yīng)用庫聲明,然后sync now。

dependencies {
   
    compile 'public:ttshop:1.0@aar'

}

感覺有用的請點個贊吧,謝謝大家。分享請注明出處。
相關(guān)文章推薦:
http://www.open-open.com/lib/view/open1434522817864.html
http://techtalk.alo7.com/?p=220

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

相關(guān)閱讀更多精彩內(nèi)容

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