gpt4 book ai didi

构建时的Android gradle uploadArchives

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:54:12 33 4
gpt4 key购买 nike

我有我的 uploadArhives 到 Maven 存储库 .aar 发布。

但我必须始终从控制台运行 gradlew uploadArhives,如何编写代码以使其在每次构建或发布构建时调用?

uploadArchives {
repositories {
mavenDeployer {
def credentials = [
userName: NEXUS_USERNAME,
password: NEXUS_PASSWORD
]
repository(url: MAVEN_REPO_URL, authentication: credentials)
pom.artifactId = 'aaa'
pom.version = version
pom.packaging = 'aar'
pom.groupId = 'bbb'

}
}
}

编辑:

如我所想,我们可以定义函数:

def uploadToMaven = {
uploadArchives
}

但是如何在每次构建时执行它呢?

最佳答案

我有一个包含许多模块和一个主应用程序的复杂项目。我在其中两个模块上添加了“uploadArchives”(因为是 android 库)。通过这种方式,我可以在 Maven 上发布我的库,只需从我的主应用程序运行任务 uploadArchives,或者使用 gradle 并调用此任务“uploadArchives”。

您可以在您的 build.gradle(您要发布的库的)“build.finalizedBy(uploadArchives)”中使用它。

例如:

android {
compileSdkVersion 23
buildToolsVersion "23.0.2"

defaultConfig {
minSdkVersion 17
targetSdkVersion 23
versionCode 2
versionName "2.0"
}

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


compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}

lintOptions {
abortOnError false
}


}


build.finalizedBy(uploadArchives)

task wrapper(type: Wrapper) {
gradleVersion = "2.8"
}

dependencies {
compile project(':spfshared')
compile 'com.google.code.gson:gson:2.4'
}

//task for Sonatype Nexus OSS
uploadArchives {
repositories {
mavenDeployer {
repository(
url: "${nexusUrl}/content/repositories/releases") {
authentication(userName: nexusUsername, password: nexusPassword)
}
snapshotRepository(
url: "${nexusUrl}/content/repositories/snapshots") {
authentication(userName: nexusUsername, password: nexusPassword)
}

pom.version = "2.0.0.1"
pom.artifactId = "spflib"
pom.groupId = "it.polimi.spf"
}
}
}

每次构建后,uploadArchives 将开始。

我尝试了这个解决方案并且它有效。

我还尝试了一些使用“build.dependsOn myTaskName”的解决方案,但没有成功。如果您愿意,可以尝试,但在我的 AndroidStudio 上,第一个解决方案有效。

PS:我使用命令“gradlew -q build”测试了我的解决方案,还专门从我在 Android Studio 中的主模块(这是我的主要应用程序)中运行任务“build”。

如果您想在每次发布时调用“uploadArchives”,只需将“build”替换为发布任务即可。

更新:我也尝试了这些代码行:

defaultTasks 'uploadArchives'

clean.finalizedBy(uploadArchives)
assembleDebug.finalizedBy(uploadArchives)
assembleRelease.finalizedBy(uploadArchives)

但有时他们多次调用“uploadArchives”,我认为这不是一个好主意。

你问的问题很有挑战性...我试了整整一个小时:)

关于构建时的Android gradle uploadArchives,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36355201/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com