I may still miss the aspect of your problem, but I just noticed something in the docs.
// force certain versions of dependencies (including transitive) // *append new forced modules: force 'asm:asm-all:3.3.1', 'commons-io:commons-io:1.4' // *replace existing forced modules with new ones: forcedModules = ['asm:asm-all:3.3.1']
It looks like you could do the following:
def dependencyVersions = [ 'org.slf4j:slf4j-api' : '1.7.2', 'javax.inject:javax.inject' : '1', 'com.google.code.findbugs:annotations' : '2.0.1', 'com.typesafe:config' : '1.0.0', 'ch.qos.logback:logback-classic' : '1.0.9', 'com.google.guava:guava' : '14.0', 'com.google.inject:guice' : '3.0', 'com.google.inject.extensions:guice-multibindings' : '3.0', 'com.google.code.gson:gson' : '2.2.2', 'joda-time:joda-time' : '2.1', 'com.thoughtworks.paranamer:paranamer' : '2.5.2', 'org.codehaus.groovy:groovy-all' : '2.0.6', 'commons-validator:commons-validator': '1.4.0', 'org.apache.shiro:shiro-core' : '1.2.1', 'junit:junit-dep' : '4.10', 'org.mockito:mockito-core' : '1.9.5', 'org.hamcrest:hamcrest-core': '1.3', 'org.hamcrest:hamcrest-library': '1.3', 'org.unitils:unitils-core': '3.3' ] force dependencyVersion.collect {k, v -> "$k:$v"}
In my opinion, it seems that this will fulfill two principles.
- Give users a beautiful map notation to use when they want to play beautifully, and add a fingerprint with your predefined version.
- Forced to use a predefined version at any time when they are trying to get confused.
source share