Java 如何修复maven依赖范围冲突(提供运行时编译)?
我有一个使用多个依赖项的项目。我习惯于在开发环境中使用Java 如何修复maven依赖范围冲突(提供运行时编译)?,java,maven,pom.xml,exec-maven-plugin,Java,Maven,Pom.xml,Exec Maven Plugin,我有一个使用多个依赖项的项目。我习惯于在开发环境中使用 mvn compile exec:java -Dexec.classpathScope=compile -Dexec.mainClass="my.Main" 直到最近我开始使用一个依赖项(我们称之为a)来定义它自己在运行时范围内的依赖项,这个依赖项才工作得很好。它的一个运行时依赖项(我们称之为B)实际上是我的另一个依赖项的依赖项,我用提供的范围(我们称之为C)设置了它 所以我有 MyProject depends on A[compile
mvn compile exec:java -Dexec.classpathScope=compile -Dexec.mainClass="my.Main"
直到最近我开始使用一个依赖项(我们称之为a
)来定义它自己在运行时范围内的依赖项,这个依赖项才工作得很好。它的一个运行时依赖项(我们称之为B
)实际上是我的另一个依赖项的依赖项,我用提供的范围(我们称之为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
时,是否有某种方法可以避免此类冲突,并可能加载类路径中的所有依赖项?
谢谢当您将exec.classpathScope=compile更改为exec.classpathScope=runtime时会发生什么?我在提供的依赖项中包含的某个类上得到一个ClassNotFoundException
。