我的项目结构是这样的。
ProjectX
- 依赖于 ProjectY
,它是一个本地 JAR,作为依赖项添加,如下所示:
<dependency>
<groupId>com.wow.projecty</groupId>
<artifactId>projecty</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>/Users/somepath/ProjectY.jar</systemPath>
</dependency>
现在,我正在为 ProjectX
创建一个 JAR,并使用该 JAR 将所有依赖项捆绑在该 JAR 中。
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>ProjectXDriver</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
这会捆绑来自 Maven 的所有依赖项,但不捆绑来自本地文件系统的依赖项。在这种情况下,最终 JAR 中缺少来自 ProjectY
的类。 (还使用 jar tf
检查)
我错过了什么?
最佳答案
我为此找到了快速修复方法。只需将JAR安装到本地maven存储库中并正常使用即可(不带system
范围/systemPath
。
mvn install:install-file -Dfile=ProjectY.jar -DpomFile=../pom.xml
关于java - 将本地 JAR 依赖项捆绑到目标 JAR 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55090032/