Given a multi module gradle project consisting of:
Where
How do you configure your dependencies to perform a maven release to a maven repository (i.e. uploadArchives) so that all artifacts (the app and libraries A,B and C) are released with the same version and dependent on the same version of the corresponding libraries?
For example:
To start with, the dependencies look like this
APP
compile project(':A')
compile project(':B')
compile project(':C')
B
compile project(':A')
C
compile project(':A')
This guarantees that when I build the project all libraries and app are compiled using the current codebase.
What I want to do is update one property in gradle.properties, and have all the artifacts released with that version, have dependencies on that version, and still be built using the current codebase (because the current codebase will be that version)
gradle.properties
PROJECT_VERSION=1.2.0
Ultimately I want the released versions to look like this:
APP
compile ('com.my.groupid:A:1.2.0')
compile ('com.my.groupid:B:1.2.0')
compile ('com.my.groupid:C:1.2.0')
B
compile ('com.my.groupid:A:1.2.0')
C
compile ('com.my.groupid:A:1.2.0')
What is the correct approach to achieving this?
You can use somenthing like this.
APP
compile project(':A')
compile project(':B')
compile project(':C')
B
compile project(':A')
C
compile project(':A')
In top-level build.gradle
use:
ext{
VERSION_NAME = 1.1.2
}
Then in your update script use:
afterEvaluate { project ->
uploadArchives {
repositories {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
pom.groupId = GROUP
pom.artifactId = POM_ARTIFACT_ID
pom.version = rootProject.ext.VERSION_NAME
//....other parts
}
}
}
}
Define a task like:
task uploadAllArchives {
description 'Upload all modules to Maven Repository'
println ''
println '---------------------------------'
println 'Version: ' + version
println 'UPLOAD ALL ARCHIVES'
println '---------------------------------'
println ''
doLast{
println ''
println '---------------------------------'
println 'Version: ' + version
println 'UPLOAD ALL ARCHIVES FINISHED'
println '---------------------------------'
println ''
}
}
uploadAllArchives.dependsOn(
':libraryA:uploadArchives',
':libraryB:uploadArchives',
':libraryC:uploadArchives')