如何强制特定子项目的gradle依赖?

时间:2016-12-21 21:05:22

标签: gradle dependencies

这就是它正在做的事情:

org.apache.santuario:xmlsec:1.5.7 -> 2.0.2 

对于这个子项目,我想强制1.5.7。顺便说一句,这东西埋得很深。必须有一个比剥洋葱更好的方法来获得排除的一个依赖。我的意思是如果我有一个依赖关系X为什么我不能以编程方式向下执行排除?这是Gradle,对吧?

这几乎奏效了:

configurations {

    compile.resolutionStrategy {
        force 'org.apache.santuario:xmlsec:1.5.7'
    }
...
}

以上在树中正确显示,但2.0.2仍然在战争中结束。

无论如何,这是有效的,并且不需要手工挖掘它,我会采取。

1 个答案:

答案 0 :(得分:0)

您可以考虑使用force

,而不是使用substitute
dependencies {
    compile 'org.apache.santuario:xmlsec:2.0.1'
}

configurations.all {
    resolutionStrategy {
        // add dependency substitution rules
        dependencySubstitution {
            substitute module('org.apache.santuario:xmlsec') with module('org.apache.santuario:xmlsec:1.5.7')
        }
    }
}

然后我得到一个输出:

$ ./gradlew -q dependencies --configuration compile

------------------------------------------------------------
Root project
------------------------------------------------------------

compile - Dependencies for source set 'main'.
\--- org.apache.santuario:xmlsec:2.0.1 -> 1.5.7
     \--- commons-logging:commons-logging:1.1.1