如果未找到未使用的第二级依赖项jar,为什么maven编译器插件会失败

问题描述 投票:0回答:1

我的项目具有如下所示的依赖性:

WebApp>级别1依赖性>级别2依赖性

让我们说

  • WebApp代码仅使用Level1依赖项jar中的类
  • 1级和2级依赖都包含在编译范围内。
  • 本地存储库中的Level1 jar。我从本地存储库中删除了Level2。

mvn compile失败,出现错误Could not find artifact com.example:mydeplevel2:jar:1.0-SNAPSHOT

我知道jar / war包装插件需要遍历整个层次结构才能确定可传递的依赖关系。

但是为什么编译器插件会出错?毕竟,即使满足所有2级依赖关系,我也只能看到目标文件夹中内置的MyWebApp.class。我可以使用javac -cp MyWebApp.java来构建MyWebApp.class。

java maven dependency-management maven-compiler-plugin
1个回答
1
投票

WebApp代码仅使用Level1依赖项jar中的类

Maven并没有做这个假设,而且在很多实际项目中都不成立。 Maven确保在编译时存在对依赖项的传递性关闭,并且不会尝试识别任何不必要的依赖项。

mvn dependency:analyze是确认是否列出所有直接依赖项的好方法,但是Maven并不认为您的项目通过了此检查。

© www.soinside.com 2019 - 2024. All rights reserved.