在我正在使用的项目依赖项中有许多相似的版本名称,例如:1.0.0,1.0.0-dev,1.0.0-dev2 ...有没有办法列出所有以1.0开头的版本。 0并从该列表中选择有趣的版本? 我在考虑使用resolutionStrategy,但它不包含可能的版本列表
答案 0 :(得分:0)
你可以这样做
configurations.all.resolutionStrategy {
List<DependencyResolveDetails> drdList = []
eachDependency { DependencyResolveDetails details ->
if (details.requested.group == 'foo' && details.requested.name = 'bar') {
drdList << details
}
}
if (drdList.size() > 1) {
List<String> versionOptions = drdList*.requested*.version
String selectedVersion = selectBestVersion(versionOptions) // TODO: implement
drdList.each { DependencyResolveDetails details ->
if (details.requested.version != selectedVersion) {
details.useVersion(selectedVersion).because("I picked $selectedVersion using a custom strategy")
}
}
}
}
也许您可以为此创建一个插件,以便通过为组/名称组合注册Comparator<String>
来为组/名称应用自定义策略更清晰
例如:
apply plugin: 'x.y.custom-version-strategy'
Comparator<String> customVersionComparator = (String version1, String version2) -> { ... }
customVersionStrategy {
strategy 'foo', 'bar', customVersionComparator
}
答案 1 :(得分:0)
看起来,我终于找到了一个解决方案:
configurations.all{
resolutionStrategy {
componentSelection {
all { ComponentSelection selection ->
if(notInteresting(selection.candidate.version))
selection.reject("")
}
}
}
}