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.groupIdpom.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

發佈了43 篇原創文章 · 獲贊 51 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章