将依赖jar条目添加到jar索引(/META-INF/INDEX.LIST)

时间:2012-02-24 11:13:33

标签: java maven jar applet

在开发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将依赖项条目包含到索引文件中?

感谢您提供任何提示......

2 个答案:

答案 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文件。