首页 > 解决方案 > 如何覆盖一个依赖项的配置级别“transitive = false”

问题描述

我继承了一些代码,想在项目中添加黄瓜,最好尽可能少改变。但是 gradle 文件有一个配置级别设置来阻止传递依赖项被拉入,这导致 cucumber-java 不拉入 cucumber-core 并因此失败。

所以这里是 build.gradle 的相关部分:

configurations.all {
  transitive = false
}

depdendencies {
  compile(group: .... lots of these

  testCompile(group: 'io.cucumber', name: 'cucumber-java8', version: '4.8.0', transitive: true)
  testCompile(group: 'io.cucumber', name: 'cucumber-testng', version: '4.8.0', transitive: true)
}

我希望transitive: true然后会覆盖配置级别,但它不起作用。

我也尝试过添加:

configurations {
  all*.exclude group: 'io.cucumber', module: 'cucumber-java8'
}

但它根本不会引入这种依赖关系

我不想手动拉入 cucumber 的所有依赖项,也不想删除这个配置级别transitive = false。有可能做我正在尝试的事情吗?我可以为compile依赖项设置配置吗?还是我必须删除配置级别设置并添加transitive: false到每个编译依赖项?

谢谢你的帮助

标签: gradlecucumberbuild.gradle

解决方案


我想你正在寻找这样的东西:

configurations {
 compile {
    transitive false
  }
 testCompile {
    transitive true
  }
}

推荐阅读