我的项目结构是这样的。
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中捆绑的所有依赖项。
<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
检查)
我错过了什么?
我找到了快速解决方案。只需在当地maven存储库中安装JAR并正常使用它(没有system
scope / systemPath
。
mvn install:install-file -Dfile=ProjectY.jar -DpomFile=../pom.xml