java - 将本地 JAR 依赖项捆绑到目标 JAR 中

标签 java maven jar

我的项目结构是这样的。

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/

相关文章:

java - 将完整的 Maven 远程存储库下载到本地存储库?

java - Maven 编译器错误

java - 如何读取另一个jar文件中的文件?

java - Maven 包不包含所有依赖项的 JAR

java - 如何在数组中的每个元素的末尾添加一个逗号

java - 了解 Java 包含或运算符 ( | )

java - 新行未插入数据库中

java - Egit + m2e 与父 pom : problems with eclipse workspace

java - Jar 文件没有(图像加载相关问题)

scala - 由 : java. lang.ClassNotFoundException : org. jets3t.service.ServiceException 引起