android本地lib通過gradle上傳到本地nexus上

今天臨時開會討論要把不經(jīng)常用的呐萨,獨立的第三方庫上傳到本地nexus上缀棍。

首先說明下搭建本地maven庫的優(yōu)勢:

  • 1 第三方庫代碼不是任何人都可以進行編輯的
  • 2 很多庫在服務器的maven上會讓本地的project結構更簡單

經(jīng)過一上午的努力 通過gradle達成目標,這里做一下分享:

第一步在本地gradle.properites設置公共字段:

SNAPSHOT_REPOSITORY_URL=http://xxx.xxx.xxxx.xxx:8080/nexus/..../repositories/snapshots/
#前面配置的releases倉庫地址
RELEASE_REPOSITORY_URL=http://xxx.xxx.xxxx.xxx:8080/nexus/c...../repositories/releases/

其中xxx代表你本地的服務器url
nexus要有兩種地址一個是 snapshots一個是releases

NEXUS_USERNAME=admin
NEXUS_PASSWORD=pwd

其中 admin和pwd代表你nexus服務器的賬號和密碼

第二步 找到在本地需要上傳到nexus的lib庫內(nèi)部的* build.gradle *文件。

在apply plugin: 'com.android.library'下添加如下內(nèi)容:


apply plugin: 'maven'


def isReleaseBuild() {
    return VERSION_NAME.contains("SNAPSHOT") == false
}

def getRepositoryUsername() {
    return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
}

def getRepositoryPassword() {
    return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
}


afterEvaluate { project ->
    uploadArchives {
        repositories {
            mavenDeployer {
                pom.groupId = "你的lib庫的包名"
                pom.artifactId = "你lib庫的項目名"
                pom.version = "版本號"
                repository(url: RELEASE_REPOSITORY_URL) {
                    authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
                }
                snapshotRepository(url: SNAPSHOT_REPOSITORY_URL) {
                    authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
                }
            }
        }
    }

    task androidJavadocs(type: Javadoc) {
        source = android.sourceSets.main.java.srcDirs
        classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    }

    task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
        classifier = 'javadoc'
        from androidJavadocs.destinationDir
    }

    task androidSourcesJar(type: Jar) {
        classifier = 'sources'
        from android.sourceSets.main.java.sourceFiles
    }

    artifacts {
        archives androidSourcesJar
//        archives androidJavadocsJar
    }
}

由于你在gradle.properites設置過RELEASE_REPOSITORY_URL、SNAPSHOT_REPOSITORY_URL、NEXUS_USERNAME和NEXUS_PASSWORD的值观堂,所以這里可以直接引用。

第三步 選擇gradle你的項目呀忧,你可以在選在Build-->Make Project或者直接點擊Android Studio上面AVDManager右側(cè)的圓形按鈕师痕。均可以gradle你的項目。

第四步 gradle你的項目后會在gradle窗口下多出一個upload方法如圖

Paste_Image.png

第五步 雙擊這個uploadArchives而账,如果輸出successfull胰坟,就表示成功,就會上傳到你nexus服務器泞辐。

我這里遇到的坑笔横,在這里說下:

1 url一定要對,我之前url出了一些問題咐吼。會報如下錯誤:
Failed to transfer file http:///xxxx. Return code is: 400"
出現(xiàn)上面的問題一般是如下問題導致的
1 url不對
2 證書不對
3 沒有權限去上傳到nexus庫
4 該用戶上傳這個庫是沒有權限的
5 這個release版本號已經(jīng)上傳過了
stackoverflow有相關答案

至此 你的庫已經(jīng)上傳到nexus上了
那么如果進行依賴那吹缔?
首先在你的整體項目的build.gradle的里面添加如下代碼即可:

是你的整體項目的build.gradle里面不是你的具體項目里面

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.1'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenCentral()
        jcenter()
        flatDir {
            dirs 'libs'
        }

        maven{
            url 'http://xxx.xxx.xxx.xx:8080/nexus/....public/'
        }
    }

}

task clean(type: Delete) {
    delete rootProject.buildDir
}

http://xxx.xxx.xxx.xx:8080/nexus/....public/ 表示你本地nexus的服務器地址
然后在你具體項目里面去依賴就可以了
然后gradle一下就好了。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锯茄,一起剝皮案震驚了整個濱河市厢塘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肌幽,老刑警劉巖晚碾,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異喂急,居然都是意外死亡格嘁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門廊移,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讥蔽,“玉大人,你說我怎么就攤上這事画机∫鄙。” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵步氏,是天一觀的道長响禽。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么芋类? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任隆嗅,我火速辦了婚禮,結果婚禮上侯繁,老公的妹妹穿的比我還像新娘胖喳。我一直安慰自己,他們只是感情好贮竟,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布丽焊。 她就那樣靜靜地躺著,像睡著了一般咕别。 火紅的嫁衣襯著肌膚如雪技健。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天惰拱,我揣著相機與錄音雌贱,去河邊找鬼。 笑死偿短,一個胖子當著我的面吹牛欣孤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播昔逗,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼降传,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了纤子?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤款票,失蹤者是張志新(化名)和其女友劉穎控硼,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艾少,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡卡乾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缚够。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幔妨。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖谍椅,靈堂內(nèi)的尸體忽然破棺而出误堡,到底是詐尸還是另有隱情,我是刑警寧澤雏吭,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布锁施,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏悉抵。R本人自食惡果不足惜肩狂,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姥饰。 院中可真熱鬧傻谁,春花似錦、人聲如沸列粪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽篱竭。三九已至力图,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間掺逼,已是汗流浹背吃媒。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吕喘,地道東北人赘那。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像氯质,于是被迫代替她去往敵國和親募舟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容