自定义选择依赖项版本

时间:2018-04-06 07:31:00

标签: gradle

在我正在使用的项目依赖项中有许多相似的版本名称,例如:1.0.0,1.0.0-dev,1.0.0-dev2 ...有没有办法列出所有以1.0开头的版本。 0并从该列表中选择有趣的版本? 我在考虑使用resolutionStrategy,但它不包含可能的版本列表

2 个答案:

答案 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("")
            }
        }
    } 
}
相关问题