天天看點

Android Gradle配置自動打包aar(sdk)并上傳至Maven庫

有時候為了避免頻繁的自己打包aar然後手動上傳到maven庫,想使用gradle配置的方法快速上傳。

是以編寫此文記錄簡單的配置方法,友善有需要的人和自己以後可以直接ctrl c+ctrl v 

----本文記錄如何在gradle中配置module自動打包上傳至maven庫

為了友善管理,我們一般會拆分多個配置檔案維護,首先建立一個版本控制配置檔案,内容如下:

//檔案名 config.gradle
ext {
    configs = [
            versionCode: 100,
            versionName: "1.0.0",
            isReleases: true, //是否釋出正式版
            versionReleases : "1.0.0-releases"
    ]
}

           

然後建立一個推送到的maven的配置檔案:

//檔案名 push.gradle
apply plugin: 'maven'
apply from: 'config.gradle'

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.srcDirs
}

artifacts {
    archives androidSourcesJar
}

uploadArchives {
    repositories {
        mavenDeployer {
            def isReleases = configs.isReleases;
            def repositoryUrl = isReleases ? "http://dev.test.com/repositories/releases/" : "http://dev.test.com/repositories/snapshots/"
            def version = isReleases ? configs.versionReleases : "0.0.1-SNAPSHOT"

            repository(url: repositoryUrl) {
                authentication(userName: "test", password: "123456")
            }

            pom.groupId = 'com.test.testsdk'
            pom.artifactId = 'testsdk'
            pom.version = version

            pom.project {
                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
            }
        }
    }
}

           

其中,需要注意的地方:

1.以下這兩句不要忘了,一個是應用maven插件,一個是導入我們的版本配置檔案

apply plugin: 'maven'
apply from: 'config.gradle'
           

2.檔案中的下面兩個位址是你需要上傳的maven庫位址,一個是正式服一個是測試服,如果不區分正式測試,可以隻指定一個位址

 "http://dev.test.com/repositories/releases/" 

 "http://dev.test.com/repositories/snapshots/"

3.需要将以下userName和password的值更新為你自己maven庫的登入賬戶密碼

 repository(url: repositoryUrl) {

                authentication(userName: "test", password: "123456")

            }

4.需要将以下值修改

pom.groupId = 'com.test.testsdk'

pom.artifactId = 'testsdk'

pom.version = version//這個讀配置,不用管

說明一下pom.groupId和pom.artifactId應該怎麼設定:

假如你希望在gradle是這樣依賴,

implementation 'android.test.sdk:testsdk:1.0.0'
           

那麼你的

pom.groupId="android.test.sdk"

pom.artifactId="testsdk"

也就是說第一個冒号前就是pom.groupId第二個冒号後是pom.artifactId

5.修改完之後,在需要自動打包上傳的module的gradle裡面應用此配置檔案,如下:

apply plugin: 'com.android.library'
android {
    compileSdkVersion 28
    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles 'consumer-rules.pro'
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

}

//---------------這一行代碼不要忘了---------------------------
apply from: 'push.gradle'
           

apply from: 'push.gradle'這句不要忘了!而且是放在最後。

ps:注意如果你的自動打包配置檔案和module的gradle檔案不再同一個目錄,不知直接 apply from: 'push.gradle',路徑需要自己注意,可能是這樣的:apply from: '../push.gradle'

-------------------------------------------------------配置完成分割線-----------------------------------------------------------------

配置完成之後,就可以在Terminal中執行  gradlew uploadArchives ,提示success之後就可以依賴到其他項目中了。

打包上傳的同時,執行一下清理,避免緩存造成其他異常可以使用用這個指令打包:gradlew  clean uploadArchives