【发布时间】:2018-05-27 22:12:01
【问题描述】:
我正在尝试创建一个原子可执行 jar(即 jar 之外没有依赖项)。
为此,我在我的 pom.xml 中添加了一个 com.jolira:onejar-maven-plugin。这似乎可以完成这项工作,但是当我执行 jar 时,我会收到警告: JarClassLoader:警告:来自关联的输入流的空清单:lib/javax.inject-1.jar JarClassLoader:警告:lib/javax.inject-1.jar 中的 javax/inject/Inject.class 被 lib/javax.inject-2.5.0-b42.jar 隐藏(使用不同的字节码) JarClassLoader:警告:lib/javax.inject-1.jar 中的 javax/inject/Named.class 被 lib/javax.inject-2.5.0-b42.jar 隐藏(使用不同的字节码)
似乎我的依赖项同时引入了 javax.inject-1.jar 和 javax.inject-2.5.0-b42.jar。为了验证这一点,我检查了两者都已经/正在从存储库下载。我当然没有在依赖项中列出两者,因此必须有一些隐含的依赖项 AFAICS。
任何人都知道是否有办法从 maven 依赖项中仅排除一个 jar,或者阻止 onejar-maven-plugin 将其包含在可执行 jar 中?
有没有更好的方法来创建一个原子(或有人称它们为胖)jar,java 加载器实际上可以从嵌入式 jar 加载。我一整天都在尝试各种不同的食谱,而 onejar 是唯一真正让加载工作的食谱。
【问题讨论】:
标签: maven jar executable-jar onejar