我在build.gradle上有这个:
testCompile(group: 'junit', name: 'junit', version: '4.+')
它解析为:
junit:junit:4.+ -> 4.12-beta-1
我不想使用测试版,但同时我想使用动态版。 在这种情况下,我想依赖4.11。
有可能吗? 怎么样?
注意:Maven "versions" plugin - how to exclude alpha/beta versions from reponse?有maven的答案,但我不确定如何在Gradle中翻译它。
答案 0 :(得分:3)
您可以使用ComponentMeta设置状态:
dependencies {
components {
eachComponent { ComponentMetadataDetails details ->
def version = details.id.version
if (version.contains("beta") || version.contains("alpha")) {
details.status = "milestone" // default in Gradle
}
}
}
}
然后使用您的依赖项的状态范围语法:
testCompile(group: 'junit', name: 'junit', version: 'latest.release')
现在Gradle不会将您的测试版视为“发布”,因此它与4.12-beta-1不匹配。这不会让你只选择4.x版本,即5.2版本也适用。
答案 1 :(得分:1)
Gradle的动态版本目前不支持此类排除。
答案 2 :(得分:0)
这是我为自己的用例解决此问题的方式。以下内容允许添加排除规则,以在相关性解决期间过滤候选对象。 符合正则表达式排除规则的候选人将被拒绝。
这是Kotlin DSL,但如果转换为Groovy,效果可能也一样。
GetEntryAssembly