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

Why does maven compiler plugin fail if unused 2nd level dependency jar(s) are not found

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

WebApp > Level1 依赖 > Level2 依赖

假设

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

我了解 jar/war 打包插件需要遍历整个层次结构才能确定传递依赖项。

但是为什么编译器插件会报错呢?毕竟,即使满足所有 level2 依赖项,我也只看到 MyWebApp.class 内置在目标文件夹中。我可以用 javac -cp MyWebApp.java.

构建 MyWebApp.class

您声明,对于您的项目:

WebApp code uses only classes in Level1 dependency jar

Maven 没有做出这样的假设,而且它不适用于许多实际项目。 Maven 确保在编译时存在依赖项的传递闭包,并且不会尝试识别任何不必要的依赖项。

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