在开发小程序时,我创建了一个带有.jar打包和不同.jar依赖项的maven项目。现在我想向我的项目 jar 添加一个归档索引 (/META-INF/INDEX.LIST),它不仅包含该 jar 的条目,还包含所有依赖 jar 的条目.
使用 jar 命令行工具我可以实现它
> jar i myproject.jar dependency1.jar dependency2.jar ...
使用 maven-jar-plugin 的 maven 存档索引标志,只有 myproject.jar 的条目出现在存档索引中,而不是依赖项 jar 的条目:
...
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<index>true</index>
</archive>
</configuration>
</plugin>
...
是否可以使用maven将依赖项包含到索引文件中?
感谢您的任何提示...
最佳答案
我最终通过以下配置解决了这个问题:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<index>true</index>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
使用此配置,所有 jar 文件(项目和依赖项)都列在 MANIFEST.MF 类路径及其条目中(目录级别的文件和包名称根据 jar 索引文档)将出现在 INDEX.LIST 中。
注意#1:同时使用 index 和 addManifest 先前版本 2.4 会导致 http://jira.codehaus.org/browse/MJAR-69 中描述的错误。 。因此请确保使用 2.4 版本的 maven-jar-plugin。
注意#2:由于 http://jira.codehaus.org/browse/MNGECLIPSE-1219 中描述的错误,如果使用“解决工作空间 Artifact ”(Eclipse Run 配置的选项)解决依赖关系,则依赖关系既不会出现在 MANIFEST.MF 中,也不会出现在 INDEX.LIST 中。因此,在使用 eclipse 构建项目之前,请确保 a) 首先安装/部署所有依赖项,b) 如有必要,禁用“解决工作区 Artifact ”选项(或在 eclipse 中关闭依赖项项目)。
注意#3:不要同时使用jar-with-dependencies(maven-assemble-plugin)和addClasspath(maven- jar-plugin),或者您将生成的 jar 中的所有条目加倍。
注意#4: java jar 命令行工具还会评估 MANIFEST.MF 的类路径(除了在调用该工具时显式列出 jar 文件之外,如我的初始示例),请参阅 jar 文档 的索引示例。
由于注释 #2,我将调查 ANT 的 jar...
非常感谢@khmarbaise 为我指明了正确的方向:-)
关于java - 将依赖项 jar 条目添加到 jar 索引 (/META-INF/INDEX.LIST),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9429788/