我有一个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

09-10 07:29
查看更多