如何修复maven依赖范围冲突(运行时编译提供)?

时间:2015-06-17 15:17:09

标签: java maven pom.xml exec-maven-plugin

我有一个项目,我使用多个依赖项。我习惯使用

在开发环境中执行我的代码
mvn compile exec:java -Dexec.classpathScope=compile -Dexec.mainClass="my.Main"

直到最近我开始使用一个依赖项(让我们称之为A)来定义它自己与运行时作用域的依赖关系之前一直工作正常。其中一个运行时依赖项(让我们称之为B)实际上是对我使用provided范围设置的另一个依赖项的依赖(让我们称之为C)。

所以我有

MyProject depends on A[compile] who depends on B[runtime]
MyProject depends on C[provided] who depends on B[no-scope-specified]

我最终将B视为运行时依赖项,当我启动上述命令时会导致ClassNotFoundException。我找到的唯一解决方案是添加一个dependencyManagement条目,强制其范围进行编译。

这让我感到困扰,因为我不直接使用该依赖项(我的代码中没有引用它)所以我不应该为此烦恼。

有没有办法避免这种冲突,并且在使用mvn exec:java时可能会加载类路径中的所有依赖项?

由于

0 个答案:

没有答案