Maven排除 - 如果依赖模块删除了排除的依赖关系模块



考虑

Project-B 
     Project-C
          Project-D
     Project-E

如果项目A取决于项目B

A IS:B,C,D&e。

现在,我想将Project-B的Project-D排除在Project-A

之外
Project-A
     Project-B 
        <exclusions> <exclusion> Project-D <exclusion/> <exclusions/>

A IS:B,C&amp;E

现在的问题是:如果Project-B决定它将从其依赖项中删除Project-D,例如以下

Project-B 
     Project-C
     Project-E

是否会在我的Project-a POM中提及项目-D的Project-B(首先是Project-B不再具有project-d,因为依赖关系不再具有project-d(会给我的构建带来任何问题吗?

我可以通过上述结构创建一个虚拟项目并进行分析,但是我正在寻找的是,在发现解决这种情况的任何更好的选择方面的专业知识(如果所有存在(

我还阅读了此参考maven - 可选的依赖关系和依赖性apache maven(只是为了确保我不复制任何问题(,但在该引用中确实找不到任何此类用例。

<</p>

在您的方案中,第一件事是您试图删除项目-A中的project-d的依赖性,而project-a的依赖性是无法使用的,因为您不能在这样,原因是项目-D是Project-C的依赖性。

因此,您需要做的第一件事是使Project-C成为您项目A的直接依赖性 - 如下:

Project-A
     Project-C
        <exclusions> <exclusion> Project-D <exclusion/> <exclusions/>

此外,您描述的是项目-B决定删除项目-D依赖性的情况可能会发生。这意味着,如果您依赖于传递依赖性(项目-D的内容(,就会收到构建错误。

这就是为什么您应该始终直接依赖您正在使用的东西的原因...换句话说,使用一类Project-D类,这意味着您的Project-A对Project-d具有直接的依赖性。/p>

最新更新