我有一个utils项目,具有类似的依赖项
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcmail-jdk15on</artifactId>
<version>1.56</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.0</version>
</dependency>
然后我的其他项目取决于utils:
<dependency>
<groupId>com.mycomp.proj</groupId>
<artifactId>utils</artifactId>
<version>${utils.version}</version>
</dependency>
这工作正常,没有问题。然后我将此包添加到utils中:
<dependency>
<groupId>net.sf.jopt-simple</groupId>
<artifactId>jopt-simple</artifactId>
<version>4.9</version>
</dependency>
我先是
mvn clean install
utils,然后是我的主项目,并且两者都构建无错误。但是由于某种原因,当我尝试运行主项目时,当它到达使用jopt-simple的类时,它将崩溃 ClassNotFoundException: joptsimple.OptionException
知道为什么我可以在utils包中不使用jopt-simple就能正常运行我的主项目,但是一旦将其添加为依赖项,它就会失败?我也已经在我的m2存储库中手动删除了utils软件包,并对其进行了重新构建,以查看是否可以修复它,但并没有解决。
最佳答案
您可以尝试以下操作-您可以声明具有系统范围的依赖项,该依赖项告诉Maven假定特定的JAR位于类路径中
因此,maven不会碰到这种依赖关系,您可以手动将jar放在类路径中。
<dependency>
<groupId>net.sf.jopt-simple</groupId>
<artifactId>jopt-simple</artifactId>
<version>4.9</version>
<scope>system</scope>
</dependency>
另一个选择-如果您想自己管理此jar文件,则可以手动添加classpath或本地仓库,然后尝试以脱机模式运行maven。
mvn -o install