我正在寻找一种方法,如果我的代码直接使用(因此导入)传递依赖,则无法使gradle构建失败。
我的意思是,如果我的项目对模块A有(编译)依赖关系,而模块A对B有依赖关系(那么B在我的传递依赖关系中,并且在我的运行时类路径中可用),并且我的代码直接导入并使用B,我希望我的构建失败。
这是一个可以满足我需求的Maven插件-https://github.com/Scout24/illegal-transitive-dependency-check-但是我找不到gradle插件?
答案 0 :(得分:1)
我认为下面的2个插件可能是您想要的。
https://github.com/wfhartford/gradle-dependency-analyze
从README:
此插件尝试复制maven依赖插件的分析目标的功能,如果声明了依赖但未使用或未使用依赖,则构建失败。
https://github.com/nebula-plugins/gradle-lint-plugin
在Unused Dependency Rule Wiki页面上:
- 促进可传递依赖关系,这些可直接依赖关系的代码直接将其用于显式的一阶依赖关系
我不得不说我自己都没有用过,但是他们似乎在解决您的确切问题。
答案 1 :(得分:0)
我认为您想使用java library plugin和api /实现配置。
对于旧版Java插件,您可以这样做
dependencies {
compile('group:module-b:1.0') { transitive = false }
}
如果需要使用它们,这将迫使您明确声明模块b的传递依赖。
注意:由于现在类路径中缺少jar,因此在运行时使用模块b可能会获得很多ClassNotFoundException。所以这可能更好
dependencies {
compile('group:module-b:1.0') { transitive = false }
runtime 'group:module-b:1.0'
}