Java 将依赖项jar条目添加到jar索引(/META-INF/index.LIST)
在开发小程序时,我创建了一个带有.jar打包和不同.jar依赖项的maven项目。现在我想向我的项目的jar中添加一个归档索引(/META-INF/index.LIST),它不仅包含这个jar的条目,而且还包含所有依赖项jar的条目 使用jar命令行工具,我可以用 >jar i myproject.jar dependency1.jar dependency2.jar 使用maven jar插件的maven archive index标志,只有myproject.jar的条目出现在归档索引中,而依赖项jar的条目不是:Java 将依赖项jar条目添加到jar索引(/META-INF/index.LIST),java,maven,jar,applet,Java,Maven,Jar,Applet,在开发小程序时,我创建了一个带有.jar打包和不同.jar依赖项的maven项目。现在我想向我的项目的jar中添加一个归档索引(/META-INF/index.LIST),它不仅包含这个jar的条目,而且还包含所有依赖项jar的条目 使用jar命令行工具,我可以用 >jar i myproject.jar dependency1.jar dependency2.jar 使用maven jar插件的maven archive index标志,只有myproject.jar的条目出现在归档索引中,而
...
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<index>true</index>
</archive>
</configuration>
</plugin>
...
。。。
maven jar插件
真的
...
是否有可能使用maven将依赖项的条目包含到索引文件中
感谢您提供的任何提示…您知道这不是文件的一部分,因为它只包含类,而不包含依赖项。依赖项应该放在MANIFEST.MF文件中(据我所知)
基于此,您不会将该信息放入INDEX.LIST文件。您可以使用MANIFEST.MF文件进行此操作。我最终通过以下配置解决了此问题:
<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>
org.apache.maven.plugins
. 因此,请确保使用maven jar插件的2.4版
注意#2:由于中描述的错误,如果使用Resolve Workspace工件(Eclipse运行配置的选项)解析依赖项,则依赖项既不会出现在MANIFEST.MF中,也不会出现在INDEX.LIST中。因此,在使用eclipse构建项目之前,请确保a)首先安装/部署所有依赖项,b)禁用“解析工作区工件”选项(或在eclipse中关闭依赖项项目)
注意#3:不要同时使用带有依赖项的jar(maven assembly plugin)和addClasspath(maven jar plugin),否则会将结果jar中的所有条目加倍
注意#4:java jar命令行工具也会评估MANIFEST.MF的类路径(除了调用工具时显示的jar文件列表,如我的初始示例所示),请参见jar文档的索引示例
由于注释2,我将调查ANT的罐子
非常感谢@khmarbaise为我指明了正确的方向:-)您是如何定义依赖关系的?(范围?)junit junit 3.8.1 test test.company applet core 1.1您将只在类路径(MANIFEST.MF)文件中看到小程序核心工件。我发现它也适用于项目,甚至依赖项工件。如果允许的话,我会发布一个答案;-)我认为它可以工作,但面临另一个问题:我创建了一个新项目,在pom.xml中的maven jar插件配置中添加了archive index参数(如上所示),并创建了两个文件:src/main/resources/a.txt和src/main/resource/test/b.txt。maven安装后,INDEX.LIST中只出现了a.txt,而没有列出b.txt(相反,显示了文件夹测试)。我找不到任何错误报告。我的错误在哪里?INDEX.LIST包含JAR(依赖项)列表,其中包含有关JAR包含哪些类的信息