我的项目具有如下所示的依赖性:
WebApp>级别1依赖性>级别2依赖性
让我们说
mvn compile
失败,出现错误Could not find artifact com.example:mydeplevel2:jar:1.0-SNAPSHOT
我知道jar / war包装插件需要遍历整个层次结构才能确定可传递的依赖关系。
但是为什么编译器插件会出错?毕竟,即使满足所有2级依赖关系,我也只能看到目标文件夹中内置的MyWebApp.class。我可以使用javac -cp MyWebApp.java来构建MyWebApp.class。
WebApp代码仅使用Level1依赖项jar中的类
Maven并没有做这个假设,而且在很多实际项目中都不成立。 Maven确保在编译时存在对依赖项的传递性关闭,并且不会尝试识别任何不必要的依赖项。
mvn dependency:analyze
是确认是否列出所有直接依赖项的好方法,但是Maven并不认为您的项目通过了此检查。