Hello everyone!
(I have posted the same question to here, no answers yet…)
I have a Android app building with Gradle. I am using the gradle-release plugin to create automatic releases, and then the uploadArchives task from the maven plugin to upload the generated .apk to a Maven repo (Nexus).
I have to add the archives to upload dynamically at execution time, because my build is using custom Android flavors and I don’t know at configuration time which artifacts will be created.
Everything works fine when I run uploadArchives normally:
def capitalizedVariantName = variant.name.capitalize()
variant.outputs.each { output ->
def apkFile = output.outputFile
tasks."assemble${capitalizedVariantName}" << {
artifacts.archives [file: apkFile, classifier: variant.baseName]
}
}
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = PROJECT_GROUP
pom.artifactId = PROJECT_NAME
}
}
}
Then I run:
./gradlew assembleFlavorNameRelease uploadArchives
The .apk is correctly uploaded to Nexus.
I have the need to run the uploadArchives task BEFORE the release plugin automatically changes the version name of the project and commit.
Basically:
- current version: 0.1.0-SNAPSHOT
- run release
- version becomes: 0.1.0
- build (build task)
- upload this build to Nexus (uploadArchives task)
- update the version to: 0.1.1-SNAPSHOT (updateVersion task)
To achieve this, what I have done is to have the updateVersion task of the gradle-release plugin depending on the uploadArchives
updateVersion.dependsOn uploadArchives
Well, when I do this, the artificats.archives. is empty, so no upload.
I suspect that, maybe, since I add the uploadArchives task as dependency of a task of the release plugin, then the “namespace” is different, so basically the uploadArchives task does not use the “same instance” of artifacts.archives, filled during the build.
Does anyone has a solution for that?