Gradle 事实发生后,我如何从渐变依赖项列表中排除?

Gradle 事实发生后,我如何从渐变依赖项列表中排除?,gradle,dependencies,Gradle,Dependencies,这适用于大型构建上的Maven到Gradle构建转换。想想罗丹,吉多拉,哥斯拉等等。那么大 给定如下所示的依赖项: ext.jbossBom = [ ... ]// This is in the root project. compile (rootProject.ext.jbossBom) //This is not in the root project 如何从上面排除项目?我尝试了以下几种变体: compile (rootProject.ext.jbossBom) { exclude g

这适用于大型构建上的Maven到Gradle构建转换。想想罗丹,吉多拉,哥斯拉等等。那么大

给定如下所示的依赖项:

ext.jbossBom = [ ... ]// This is in the root project.
compile (rootProject.ext.jbossBom) //This is not in the root project
如何从上面排除项目?我尝试了以下几种变体:

compile (rootProject.ext.jbossBom) {
exclude group: "some.group", module: "some.module"
}

jbossBom
是一个集合。删除要删除的元素:

compile (rootProject.ext.jbossBom.findAll{ !it.startsWith('some.group')})
要全局排除某个可传递依赖项(无论哪个依赖项将其引入),可以执行以下操作:

configurations {
    compile.exclude group: 'commons-math3', module: 'commons-math3'
    compile.exclude group: 'commons-pool2', module: 'commons-pool2'
 }
dependencies{
    jbossBom.each{
        compile (it){exclude group:'foo', module:'bar'}
    }
}
要从
jbossBom
的每个内容中排除特定的可传递依赖项,可以执行以下操作:

configurations {
    compile.exclude group: 'commons-math3', module: 'commons-math3'
    compile.exclude group: 'commons-pool2', module: 'commons-pool2'
 }
dependencies{
    jbossBom.each{
        compile (it){exclude group:'foo', module:'bar'}
    }
}

这不是我第一次问这个问题,当然这是我迄今为止看到的最好的答案,但这是否包括通过瞬变带来的东西?那些是我的问题孩子。我怀疑的是,我将不得不从maven端为这个野兽构建一个巨大的依赖关系图,然后重新安排它。可以肯定的是,这是一次痛苦而乏味的锻炼。如果我改变列表的性质,使它们成为真正的依赖关系树,并尝试以这种方式使用它们,该怎么办?我已经查看了findAll的API,它返回了一个集合,这意味着它不会导致使用相同依赖关系集合的其他组件出现问题。太棒了。这不排除及物动词。您要删除的元素只有在它已经在集合中时才会被删除,而该集合中不会有传递项。但是,您可以在编译配置中添加一个全局排除项,该配置将排除该传递项,不管它是如何进入mix.BTW的。顺便说一句,如果您发现答案信息丰富,您应该向上投票。也可以把它标记为一个被接受的答案。所以答案是:“你在Gradle还不能这么做……至少不在必要的程度上。”