在开发applet时,我创建了一个带有.jar包装和不同.jar依赖项的maven项目。现在我想在我的项目的jar中添加一个归档索引( /META-INF/INDEX.LIST ),它不仅包含这个jar的条目,还包含所有依赖jar的条目< /强>
使用jar命令行工具我可以用
实现它&GT; jar我myproject.jar dependency1.jar dependency2.jar ...
使用maven-jar-plugin的maven archive index标志,只有 myproject.jar 的条目出现在归档索引中,而不是依赖项jars的条目:
...
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<index>true</index>
</archive>
</configuration>
</plugin>
...
是否有可能使用maven将依赖项条目包含到索引文件中?
感谢您提供任何提示......
答案 0 :(得分:2)
我终于用以下配置解决了它:
<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索引doc的软件包名称)中)将出现在 INDEX.LIST 。
中注意#1:使用 index 和 addManifest 之前的版本2.4会导致http://jira.codehaus.org/browse/MJAR-69中描述的错误。因此,请确保使用maven-jar-plugin的2.4版本。
注意#2:由于http://jira.codehaus.org/browse/MNGECLIPSE-1219中描述的错误,如果使用 Resolve Workspace工件解析依赖关系,则MANIFEST.MF和INDEX.LIST中都不会发生依赖关系(Eclipse Run配置的选项)。因此,请确保a)首先安装/部署所有依赖项,然后b)在使用eclipse构建项目之前,必要时禁用 Resolve Workspace工件选项(或关闭eclipse中的依赖项目)。
注意#3:请勿同时使用 jar-with-dependencies (maven-assembly-plugin)和 addClasspath (maven- jar-plugin),或者你将在生成的jar中加倍所有条目。
注意#4: java jar 命令行工具还会评估MANIFEST.MF的类路径(除了在调用工具时显式列出jar文件,如我所示初始示例),请参阅 jar doc 的索引示例。
由于注意事项#2,我将调查ANT的 jar ......
非常感谢@khmarbaise指出我正确的方向: - )
答案 1 :(得分:0)
您知道这不是INDEX.LIST文件的一部分,因为它只包含类而不包含依赖项。依赖项应该位于MANIFEST.MF文件中(据我所知)。
基于Maven,您不会将该信息输入INDEX.LIST文件。您可以使用MANIFEST.MF文件。