diff options
Diffstat (limited to 'mobile/android/android-components/substitute-local-ac.gradle')
-rw-r--r-- | mobile/android/android-components/substitute-local-ac.gradle | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/mobile/android/android-components/substitute-local-ac.gradle b/mobile/android/android-components/substitute-local-ac.gradle new file mode 100644 index 0000000000..208b80f6c0 --- /dev/null +++ b/mobile/android/android-components/substitute-local-ac.gradle @@ -0,0 +1,46 @@ + +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 { + configureEach { 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]) + } + } + } + } + } +} + |