diff --git a/src/main/groovy/com/xebialabs/gradle/dependency/DependencyManagementContainer.groovy b/src/main/groovy/com/xebialabs/gradle/dependency/DependencyManagementContainer.groovy index 695b6cd..55e8efc 100644 --- a/src/main/groovy/com/xebialabs/gradle/dependency/DependencyManagementContainer.groovy +++ b/src/main/groovy/com/xebialabs/gradle/dependency/DependencyManagementContainer.groovy @@ -18,9 +18,14 @@ class DependencyManagementContainer { private Project rootProject = null private boolean resolved = false + boolean manageDependencies = true + Map versions = [:].withDefault { "" } - Map resolveCache = [:].withDefault { String s -> s ? engine.createTemplate(s).make(versions).toString() : s } + Map resolveCache = [:].withDefault { String s -> + Map resolutionContextMap = (versions + rootProject.extensions.extraProperties.properties).withDefault { "" } + s ? engine.createTemplate(s).make(resolutionContextMap).toString() : s + } Map managedVersions = [:] List blackList = [] Map rewrites = [:] @@ -48,10 +53,25 @@ class DependencyManagementContainer { } private def exposeVersions() { - versions.collect { k, v -> - if (v !== "" && k != "out") { - logger.debug("${rootProject.name} added $k=$v") - rootProject.extensions.extraProperties.set(k, v) + versions << versions.collectEntries { k, v -> + if (k !== "out") { + if (rootProject.extensions.extraProperties.has(k)) { + def overrideValue = rootProject.extensions.extraProperties.get(k) + logger.info("${rootProject.name} added overriden version ${k}=${overrideValue} (found in gradle extra properties)") + rootProject.extensions.extraProperties.set(k, overrideValue) + [k:overrideValue] + } else { + if (v !== "") { + logger.info("${rootProject.name} added version $k=$v") + rootProject.extensions.extraProperties.set(k, v) + [k:v] + } else { + logger.error("Unable to expose version ${k} to gradle extra properties. Check if it is defined in gradle.properties or .conf file") + [k:""] + } + } + } else { + [:] } } } diff --git a/src/main/groovy/com/xebialabs/gradle/dependency/DependencyManagementExtension.groovy b/src/main/groovy/com/xebialabs/gradle/dependency/DependencyManagementExtension.groovy index ce7c1f7..68eddc8 100644 --- a/src/main/groovy/com/xebialabs/gradle/dependency/DependencyManagementExtension.groovy +++ b/src/main/groovy/com/xebialabs/gradle/dependency/DependencyManagementExtension.groovy @@ -32,4 +32,9 @@ class DependencyManagementExtension { project.logger.info("Added dependency management artifact: $s") container.addSupplier(new DependencySupplier(this.project, s)) } + + def manageDependencies(Boolean manageDependencies) { + project.logger.info("Dependencies managed by Dependency management plugin: $manageDependencies") + container.manageDependencies = manageDependencies + } } diff --git a/src/main/groovy/com/xebialabs/gradle/dependency/DependencyManagementProjectConfigurer.groovy b/src/main/groovy/com/xebialabs/gradle/dependency/DependencyManagementProjectConfigurer.groovy index b879e70..2b8658e 100644 --- a/src/main/groovy/com/xebialabs/gradle/dependency/DependencyManagementProjectConfigurer.groovy +++ b/src/main/groovy/com/xebialabs/gradle/dependency/DependencyManagementProjectConfigurer.groovy @@ -13,8 +13,10 @@ class DependencyManagementProjectConfigurer { // Contract for all is that it executes the closure for all currently assigned objects, and any objects added later. project.getConfigurations().all { Configuration config -> if (config.name != 'zinc') { // The Scala compiler 'zinc' configuration should not be managed by us - config.resolutionStrategy { ResolutionStrategy rs -> - rs.eachDependency(manageDependency(project, container)) + if (container.manageDependencies) { + config.resolutionStrategy { ResolutionStrategy rs -> + rs.eachDependency(manageDependency(project, container)) + } } configureExcludes(project, config, container) } diff --git a/src/main/groovy/com/xebialabs/gradle/dependency/XLDependencyPlatformPlugin.groovy b/src/main/groovy/com/xebialabs/gradle/dependency/XLDependencyPlatformPlugin.groovy index 95e72ac..33fabcf 100644 --- a/src/main/groovy/com/xebialabs/gradle/dependency/XLDependencyPlatformPlugin.groovy +++ b/src/main/groovy/com/xebialabs/gradle/dependency/XLDependencyPlatformPlugin.groovy @@ -36,7 +36,7 @@ class XLDependencyPlatformPlugin implements Plugin { } project.logger.info("Added $artifactModule:$artifactVersion to ${projectName}") } else { - project.logger.info("Unable to add $artifactModule to ${projectName}") + project.logger.info("Unable to add $artifactModule to ${projectName} as a constraint") } } }