我正在尝试创建一个原子可执行 jar(即 jar 之外没有依赖项)。
为此,我在 pom.xml 中添加了一个 com.jolira:onejar-maven-plugin。这似乎可以完成这项工作,但是当我执行 jar 时,我收到警告: JarClassLoader: Warning: Null manifest from input stream associated with: lib/javax.inject-1.jar JarClassLoader: Warning: javax/inject/Inject.class在 lib/javax.inject-1.jar 中被 lib/javax.inject-2.5.0-b42.jar 隐藏(具有不同的字节码) JarClassLoader:警告:lib/javax.inject-1 中的 javax/inject/Named.class .jar 被 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 是唯一真正让加载工作的食谱。