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

标签 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-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:同时使用 indexaddManifest 先前版本 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/

相关文章:

java.lang.NoClassDefFoundError : io/jsonwebtoken/Jwts - maven spring-boot

java - 将消息异步放在WebSphere MQ队列上

java - Spring & Wildfly 异步请求

java - CMAKE-COMPILE 在 hadoop-hdfs-native 客户端中失败

mysql - 命名异常 : Cannot create resource instance with tomcat7-maven-plugin h2/mysql database

maven - Jenkins Pipeline 和 SonarQube 设置

java - 可执行 jar 背后的魔力?

java - 如果超时或处理消息的应用程序崩溃,消息会发生什么情况?

java - EJB 3.0 定时器集群信息

java - jar文件文件夹中的资源列表?