我有一个使用多个依赖项的项目。我习惯于在开发环境中使用
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
?
谢谢