我有一个像
这样的依赖项的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 repo中手动删除了utils包,并重建它以查看是否修复了它但它没有。
答案 0 :(得分:-1)
您可以尝试以下操作 - 您可以使用系统范围声明依赖项,该系统范围告诉Maven假定特定JAR位于类路径中
因此,maven不会触及此依赖项,您可以手动将jar放入类路径中。
<dependency>
<groupId>net.sf.jopt-simple</groupId>
<artifactId>jopt-simple</artifactId>
<version>4.9</version>
<scope>system</scope>
</dependency>
另一个选项 - 如果您想自己管理这个jar文件,可以手动添加类路径或本地存储,然后尝试在离线模式下运行maven。
mvn -o install