2012-02-24 227 views
2

在开发applet时,我创建了一个带有.jar包装和不同.jar依赖关系的maven项目。现在我想添加一个档案索引(/META-INF/INDEX.LIST)到我的项目的jar中,该jar不仅包含这个jar的条目,还包含也是所有依赖jar的条目的条目。将依赖jar条目添加到jar索引(/META-INF/INDEX.LIST)

随着jar命令行工具,我用

>罐子实现它,我myproject.jar dependency1.jar dependency2.jar ...

使用行家的行家档案索引标志罐子,插件只为myproject.jar条目出现在存档指数,依赖罐子不是这样的条目:

... 
    <plugin> 
    <artifactId>maven-jar-plugin</artifactId> 
    <configuration> 
     <archive> 
     <index>true</index> 
     </archive> 
    </configuration> 
    </plugin> 
    ... 

是否有公司的可能性使用maven将索引文件中的依赖条目拖放到索引文件中?

感谢您的任何提示...

+0

你是如何定义的依赖关系? (范围?) – khmarbaise 2012-02-24 11:55:00

+0

<依赖性> 的junit 的junit 3.8.1 测试 \t test.company \t 小应用程序核心 \t 1.1 \t Peter 2012-02-24 12:01:57

+0

您只能在类路径(MANIFEST.MF)文件中看到applet-core工件。 – khmarbaise 2012-02-24 12:12:29

回答

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:同时使用索引addManifest现有版本2.4导致在http://jira.codehaus.org/browse/MJAR-69描述的错误。所以一定要使用Maven-jar-plugin的2.4版本。

注2:由于http://jira.codehaus.org/browse/MNGECLIPSE-1219描述的错误,如果将依赖使用解析工作空间伪影(Eclipse的运行配置的选项)解决既不MANIFEST.MF也不发生INDEX.LIST依赖性。因此,确保您a)首先安装/部署所有依赖项,并且b)在使用eclipse构建项目之前,必要时禁用解决工作区工件选项(或者在eclipse中关闭依赖项目)。

注3:不要在同时使用JAR-与依赖性(Maven的组装插件)和addClasspath(Maven的JAR-插件),否则你会加倍的所有条目产生的罐子。

注4:化java 罐子命令行工具不还评价MANIFEST.MF的类路径(除了援引在我最初的例子所示的工具时jar文件明确上市),看到的指数例子jar doc

由于需要注意#2,我将调查到Ant的罐子 ...

非常感谢@khmarbaise指着我正确的方向:-)

0

你知道,因为它仅包含类,但不依赖这不是INDEX.LIST文件的一部分。依赖关系应该位于MANIFEST.MF文件中(而据我所知)。

根据Maven,您不会将该信息获取到INDEX.LIST文件中。您可以为此使用MANIFEST.MF文件。

+0

INDEX.LIST包含JAR(依赖关系)的列表以及关于JAR包含哪些类的信息 – 2012-02-24 12:07:46