發佈androidlib項目到maven倉庫

隨着公司新遊戲、新項目的增加,爲了提高開發效率,方便項目的統一維護,於是我們將一些積累的公共代碼以及第三方的開源庫放在一個library項目中,然後上傳到公司自己基於Nexus搭建的Maven倉庫,以便在其他項目中通過Gradle配置來添加引用,既方便又快捷。
一.編寫gradle腳本配置
1.首先在lib下新建gradle.properties文件,在裏面配置版本號,倉庫地址,倉庫包名和名稱以及maven倉庫的用戶名和密碼。在這裏插入圖片描述

VERSION=1.1.0
GROUP_ID=com.sdk.manage
ARTIFACT_ID=swanalytics

RELEASE_URL=
SNAPSHOT_URL=

NAME=
PASSWORD=

2.新建maven_push.gradle文件

apply plugin: 'maven'
apply plugin: 'signing'
apply plugin: 'maven-publish'


configurations {
    deployerJars
}

repositories {
    mavenCentral()
}

// 判斷版本是Release or Snapshots
def isReleaseBuild() {
    return !VERSION.contains("SNAPSHOT");
}

// 獲取倉庫url
def getRepositoryUrl() {
    return isReleaseBuild() ? RELEASE_URL : SNAPSHOT_URL;
}

uploadArchives {
    repositories {
        mavenDeployer {

            repository(url: getRepositoryUrl()) {
                authentication(userName : NAME, password: PASSWORD) // maven授權信息
            }

            beforeDeployment {
                MavenDeployment deployment -> signing.signPom(deployment)
            }

            pom.version = VERSION
            pom.artifactId = ARTIFACT_ID
            pom.groupId = GROUP_ID
        }
    }
}

// type顯示指定任務類型或任務, 這裏指定要執行Javadoc這個task,這個task在gradle中已經定義
task androidJavadocs(type: Javadoc) {
    // 設置源碼所在的位置
    source = android.sourceSets.main.java.sourceFiles
}

// 生成javadoc.jar
task androidJavadocsJar(type: Jar) {
    // 指定文檔名稱
    classifier = 'javadoc'
    from androidJavadocs.destinationDir
}

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

// 產生相關配置文件的任務
artifacts {
//    archives androidSourcesJar
//    archives androidJavadocsJar
}

// 進行數字簽名
signing {
    // 當 發佈版本 & 存在"uploadArchives"任務時,才執行
    required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
    sign configurations.archives
}

3.在build.gradle裏面進行依賴apply from: 'maven_push.gradle’點擊上傳,然後就可以在倉庫中看到aar包啦在這裏插入圖片描述
4.別的項目依賴倉庫,在project.gradle裏面進行配置

allprojets {
    repositories {
        jcenter()
        maven{
            url '剛纔上傳的倉庫地址'
        }
    }
}

在主module的build.gradle裏面進行依賴

compile 'com.sdk.manage:swanalytics:1.0.0'

5.碰到的坑,當代碼混淆上傳的時候要關掉androidSourcesJar和androidJavadocsJar上傳,不然別的項目依賴下載的aar包有問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章