0

我有一个使用多个依赖项的项目。我习惯于在开发环境中使用

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

谢谢

4

0 回答 0