我正在尝试捆绑一个包含所有依赖项的 java 存档 (JAR)。首先,我尝试使用maven 程序集插件,尽管它缺少一些类。jar-with-dependencies 文档建议使用maven -shade-plugin,这最终会丢失不同的类。我认为正在发生的事情是使用相同包名的多个依赖项似乎被跳过了,所以像 slf4j 这样的东西被跳过了。
我真正喜欢的是打包的 jar 包含自包含的库,而不是重新打包它们。
我几乎放弃了,并认为我只是将bin 描述符用于程序集插件,它只压缩了 jar 本身而没有依赖项。
注意:我知道其他人也问过类似的问题,这导致了使用阴影/组装插件的建议,尽管没有人说明我遇到的具体问题。
更新:由 khmarbaise 要求,以下显示了一个 POM,其中所有课程都被跳过。请注意,还有另一个 JAR 使用相同的包结构但是是本地化包,包括本地化包但省略了所有类。
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ddtek</groupId>
<artifactId>openedge</artifactId>
<packaging>jar</packaging>
<version>10.1C04</version>
<name>openedge</name>
<url>http://progress.com</url>
<dependencies>
<dependency>
<groupId>com.ddtek</groupId>
<artifactId>base</artifactId>
<version>10.1C04</version>
</dependency>
<dependency>
<groupId>com.ddtek</groupId>
<artifactId>util</artifactId>
<version>10.1C04</version>
</dependency>
</dependencies>
</project>
请注意,上面的 POM 是一个第三方库,不发布到 maven,只存在于我们本地的 nexus repo 中。