Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将依赖项jar条目添加到jar索引(/META-INF/index.LIST)_Java_Maven_Jar_Applet - Fatal编程技术网

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

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的条目出现在归档索引中,而

在开发小程序时,我创建了一个带有.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的条目不是:

  ...
  <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包含哪些类的信息