首页 > 解决方案 > 如果没有明确要求,Gradle 拒绝快照

问题描述

我正在使用带有动态版本控制的 gradle,即类似这样的东西

dependencies {
    compile("myGroup:myModule:1.9.+")
}

我想拒绝任何 SNAPSHOT 候选人,这样上面的例子就会匹配1.9.1但会拒绝1.9.2-SNAPSHOT,除非有人明确要求它。

到目前为止,我们使用了类似的东西

resolutionStrategy.componentSelection {
    all { ComponentSelection selection ->
        if (selection.candidate.version.endsWith("-SNAPSHOT")){
            selection.reject("Rejecting changing version (SNAPSHOT)'")
        }
    }
}

这会拒绝所有以SNAPSHOT. 我了解到,人们也可以使用类似这样的方式访问请求的版本

resolutionStrategy.eachDependency { details ->
    if (details.requested.version.endsWith("-SNAPSHOT")) {
        ...
    }
}

有没有办法将两者结合成这样的东西?

if (selection.candidate.version.endsWith("-SNAPSHOT") && !  details.requested.version.endsWith("-SNAPSHOT")) {
    selection.reject("Rejecting changing version (SNAPSHOT)'")
}

标签: gradlebuild.gradle

解决方案


推荐阅读