50 lines
2.4 KiB
Groovy
50 lines
2.4 KiB
Groovy
|
|
||
|
def version = null
|
||
|
if (gradle.hasProperty("localProperties.autoPublish.android-components.dir")) {
|
||
|
// We're doing local development using the autoPublish system. This automatically rebuilds and
|
||
|
// publishes android-components packages whenever the source changes.
|
||
|
// This version string will selected the latest build package
|
||
|
version = '0.0.1-+'
|
||
|
} else if (gradle.hasProperty("localProperties.branchBuild.android-components.version")) {
|
||
|
// We're running a branch build. Here the version is set to the git commit id in
|
||
|
// local.properties
|
||
|
version = gradle.getProperty("localProperties.branchBuild.android-components.version")
|
||
|
} else {
|
||
|
throw new Exception("substitute-local-appservices.gradle called from unexpected context")
|
||
|
}
|
||
|
logger.lifecycle("[local-ac] adjusting project to use locally published android-components modules (${version})")
|
||
|
|
||
|
// Inject mavenLocal repository. This is where we're expected to publish modules.
|
||
|
repositories {
|
||
|
mavenLocal()
|
||
|
}
|
||
|
|
||
|
configurations.configureEach { config ->
|
||
|
if (config.isCanBeResolved()) {
|
||
|
config.resolutionStrategy { strategy ->
|
||
|
dependencySubstitution {
|
||
|
// Linter is broken here and incorrectly suggests to replace
|
||
|
// all() with configureEach(), which doesn't exist on DependencySubstitutions.
|
||
|
// https://docs.gradle.org/current/javadoc/org/gradle/api/artifacts/DependencySubstitutions.html
|
||
|
//noinspection ConfigurationAvoidance
|
||
|
all { dependency ->
|
||
|
if (!(dependency.requested instanceof ModuleComponentSelector)) {
|
||
|
// We only care about substituting for a module, not a project.
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// For every org.mozilla.components.* module, substitute its version for '+'.
|
||
|
// '+' version tells gradle to resolve the latest available version.
|
||
|
// As long as 'mavenLocal' is in the repositories list, gradle should pick out
|
||
|
// latest published module during dependency resolution phase.
|
||
|
def group = dependency.requested.group
|
||
|
if (group == 'org.mozilla.components') {
|
||
|
def name = dependency.requested.module
|
||
|
dependency.useTarget([group: group, name: name, version: version])
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|