美文网首页
Gradle7.4 根据版本名称发布到RELEASE或SNAPS

Gradle7.4 根据版本名称发布到RELEASE或SNAPS

作者: 打野路过惩戒炮车 | 来源:发表于2022-03-01 16:04 被阅读0次

使用过pom的朋友都会知道,可以通过<distributionManagement>配置多个仓库地址,在打包发布到私服时会根据版本后缀自动发布到RELEASE或SNAPSHOT仓库。
但是我今天使用Gradle 打包发布时发现,在repositories配置多个仓库地址,不会根据版本后缀发布到对应的仓库,而是两个仓库都会发布。
上网找了一下发现没有Gradle 的例子,自己尝试了一下达到了相同的效果,话不多说直接上代码

plugins {
    id 'com.android.library'
    id 'maven-publish'
}
//versionName="1.0.0-RELEASE"
def versionName="1.0.0-RELEASE"
android {
    compileSdk 29

    defaultConfig {
        minSdk 19
        targetSdk 29

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

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
//编译后执行以下任务
afterEvaluate {
    //读取上传凭证,为了安全起见配置在了local.properties
   //注意这里不是阿里云账号和密码,而是云效仓库账号密码,可在仓库首页设置中看到
    Properties properties = new Properties()
    properties.load(project.rootProject.file('local.properties').newDataInputStream())
    def userName = properties.getProperty('maven.username')
    def passWord = properties.getProperty('maven.password')
    //定义发布的地址,默认发布到快照库
    //我这里用的阿里云效,从url就可以看出一个是snapshot一个是release
    def publishUrl= "https://packages.aliyun.com/maven/repository/xxxxxxx-snapshot-xxxxxx/"
    if (versionName.endsWith("RELEASE")){
        publishUrl = "https://packages.aliyun.com/maven/repository/xxxxxxx-release-xxxxxx/"
    }
    if (versionName.endsWith("SNAPSHOT")){
        publishUrl = "https://packages.aliyun.com/maven/repository/xxxxxx-snapshot-xxxxxx"
    }
    publishing {
        publications {
            push(MavenPublication) {
                from components.release
                groupId = 'xx.xxxx.xx'
                artifactId = "xx"
                version = versionName
            }
        }
        repositories {
            //发布到本地仓库
            mavenLocal()
            //发布到远程仓库
            maven {
               
                credentials {
                    username userName
                    password passWord
                }
                //远程仓库地址
                url publishUrl
            }
        }
    }
}


dependencies {
    implementation 'androidx.appcompat:appcompat:1.3.0'
    implementation 'com.google.android.material:material:1.4.0'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    implementation 'com.google.protobuf:protobuf-lite:3.0.1'
}

双击publishing即可进行发布


image.png

相关文章

网友评论

      本文标题:Gradle7.4 根据版本名称发布到RELEASE或SNAPS

      本文链接:https://www.haomeiwen.com/subject/lnodrrtx.html