如果直接使用传递依赖项,将导致gradle构建失败?

时间:2019-02-07 18:17:45

标签: java gradle

我正在寻找一种方法,如果我的代码直接使用(因此导入)传递依赖,则无法使gradle构建失败。

我的意思是,如果我的项目对模块A有(编译)依赖关系,而模块A对B有依赖关系(那么B在我的传递依赖关系中,并且在我的运行时类路径中可用),并且我的代码直接导入并使用B,我希望我的构建失败。

这是一个可以满足我需求的Maven插件-https://github.com/Scout24/illegal-transitive-dependency-check-但是我找不到gradle插件?

2 个答案:

答案 0 :(得分:1)

我认为下面的2个插件可能是您想要的。

  1. https://github.com/wfhartford/gradle-dependency-analyze

    README

      

    此插件尝试复制maven依赖插件的分析目标的功能,如果声明了依赖但未使用或未使用依赖,则构建失败。

  2. https://github.com/nebula-plugins/gradle-lint-plugin

    Unused Dependency Rule Wiki页面上:

      
        
    1. 促进可传递依赖关系,这些可直接依赖关系的代码直接将其用于显式的一阶依赖关系
    2.   

我不得不说我自己都没有用过,但是他们似乎在解决您的确切问题。

答案 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'
}