Gradle 如何强制特定子项目具有渐变依赖关系?

Gradle 如何强制特定子项目具有渐变依赖关系?,gradle,dependencies,Gradle,Dependencies,这就是它正在做的: org.apache.santuario:xmlsec:1.5.7 -> 2.0.2 就为了这个子项目,我想强制执行1.5.7。顺便说一句,这东西埋得很深。必须有一种比剥洋葱更好的方法来获得排除的一个依赖项。我的意思是,如果我有一个依赖项X,为什么我不能通过编程将它级联到树上进行排除呢?我是格拉德,对吗 这几乎奏效了: configurations { compile.resolutionStrategy { force 'org.apac

这就是它正在做的:

org.apache.santuario:xmlsec:1.5.7 -> 2.0.2 
就为了这个子项目,我想强制执行1.5.7。顺便说一句,这东西埋得很深。必须有一种比剥洋葱更好的方法来获得排除的一个依赖项。我的意思是,如果我有一个依赖项X,为什么我不能通过编程将它级联到树上进行排除呢?我是格拉德,对吗

这几乎奏效了:

configurations {

    compile.resolutionStrategy {
        force 'org.apache.santuario:xmlsec:1.5.7'
    }
...
}
上述内容在树中正确显示,但2.0.2仍会在战争中结束


无论如何,这是有效的,不需要手动挖出来,我会采取

> >使用< <代码>强制> >代码> >您可以考虑使用<代码>替代< /代码> .<
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

我会试试看,但如果一个不起作用,另一个似乎不会。。。但谁知道呢?