【发布时间】:2012-10-12 06:48:29
【问题描述】:
我正在尝试捆绑一个包含所有依赖项的 java 存档 (JAR)。首先,我尝试使用maven assembly plugin,尽管它缺少一些类。 jar-with-dependencies documentation 建议使用 maven-shade-plugin,这最终会丢失不同的类。我认为正在发生的事情是使用相同包名的多个依赖项似乎被跳过了,所以像 slf4j 这样的东西被跳过了。
我真正喜欢的是打包的 jar 包含自包含的库,而不是重新打包它们。
我几乎放弃了,并认为我只需要使用 bin descriptor for the assembly plugin,它只压缩了 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 中。
【问题讨论】:
-
显示 pom 并描述错过了哪些课程?
-
我遇到了类似的问题,并且对它的解决方案很感兴趣,因为我找不到令人满意的解决方案。顺便说一句,你打算把所有东西都放在一个罐子里吗?
标签: java maven maven-2 uberjar