1. 程式人生 > >android 上傳aar到私有maven伺服器

android 上傳aar到私有maven伺服器

搞這個東西也是花了蠻長時間,主要還是對gradle中的groovy語言不熟悉所導致的,寫下來,以防下次再入坑~

在gradle中新建task

如果你需要將某個module打包成aar,並上傳到maven上去,需要在這個module下面的build.gradle檔案中新增如下程式碼:

這裡寫圖片描述

其中程式碼:

apply plugin: 'maven'

表示我們要應用的外掛。
MAVEN_LOCAL_PATH表示maven伺服器地址,packaging表示需要打包的型別,groupId:artifactId:version,就是我們需要依賴的欄位。

上傳aar到maven伺服器

在studio中開啟控制檯,執行命令

./gradlew uploadArchives

就能看到log一直跑,直到99%上傳aar,如果提示buildSuccessful,那祝賀你,你已經將aar檔案上傳到maven伺服器了。

上傳時遇到的問題

執行上傳任務時,其實遇到蠻多問題的,這裡記住幾個就都寫下來~

fail to resolve: TestProject:datalibrary:unspecified

解決辦法:將

compile 'com.android.commonlibrary:datalibrary:0.1.0'

改為

compile 'com.android.commonlibrary:datalibrary:0.1.0@aar
'

return Code 401

解決辦法:這是上傳的賬號密碼不對,請跟maven倉庫管理員認真核實申請的賬號密碼。

Fix the issues identified by lint

這個錯誤具體截圖所示:
這裡寫圖片描述

根據log提示,我們需要在每個module的build.gradle檔案中的android域內新增程式碼

android{
     lintOptions{
        abortOnError false
    }
}

記住,是每個module都得新增,不然還是會出錯,血淋淋的教訓吶

宣告需要引用的maven伺服器

在我們主工程的最外層的build.gradle中,新增如下程式碼:

allprojects {
    repositories {
        jcenter()
        maven {
            url "http://192.168.1.107:9999/repository/commonlibrary/"
            credentials {
                username 'louxiaohui'
                password '111111'
            }
        }
    }
}

注意:由於現在經常用的jcenter,bintray,nexus,aar包都是public的,所以宣告maven伺服器時,不需要設定賬號密碼,但是對於有些設定了賬號密碼的,就得新增程式碼進行認證~

credentials {
    username 'louxiaohui'
    password '111111'
}

PS: 這都是血淋淋的教訓,由於對groovy語言不熟悉,我對credentials這個關鍵字都找了好久,才知道這貨是用來認證賬號密碼的。。。

引用aar

這個就簡單啦,程式碼大家應該都很熟悉,在需要引用此aar的
module中的build.gradle檔案中,新增如下程式碼:

compile 'com.android.commonlibrary:datalibrary:0.1.0'

總結:指令碼語言還是得熟能生巧~