Maven:将第三方jar的导出jar添加到manifest中的classpath

时间:2012-12-14 16:19:22

标签: java eclipse maven jar

我正在使用Eclipse 开发 Java maven项目,并希望导出包含所有引用库的jar 。这些引用的库分为以下两类:

  1. 他们是pom.xml

  2. 中的显式(或隐含) 依赖关系
  3. 我有一些库不能用作maven工件并将它们放在/ lib中(并将它们添加到Eclipse中的构建路径中)

  4. maven-assembly-plugin,适用于1)。但是,我无法找到包含非maven依赖关系的maven插件,例如"all jars in /lib"

    然后是Eclipse FatJar插件,这种插件有效,但自2009年以来一直没有更新,因此它似乎没有维护。另外,我更喜欢我可以在pom.xml中直接指定的导出方法。

    有人可以指向我maven插件或类似内容,以导出所有引用的库,包括来自案例2的那些<)这只需要将它们放在jar中并在manifest的类路径中引用它们。

    谢谢!

2 个答案:

答案 0 :(得分:4)

我认为处理此问题的最佳方法是将自定义库包含到本地maven存储库中。现在,您可以将库作为maven依赖项包含在内,并且可以使用maven-assembly-plugin导出pom中指定的所有依赖项。

这是一个教程,如何将您的lib放入maven中的本地存储库,以便在您的pom中使用它。 http://www.mkyong.com/maven/how-to-include-library-manully-into-maven-local-repository/

在你的pom.xml中:

<!-- setup jar manifest to executable with dependencies -->
<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <configuration>
    <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
    <archive>
      <manifest>
        <mainClass>your.main.class</mainClass>
      </manifest>
    </archive>
  </configuration>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
       <goal>single</goal>
      </goals>  
    </execution>
  </executions>
</plugin>

答案 1 :(得分:0)

这看起来像Tycho的任务。它是一组maven插件,允许使用maven创建eclipse插件。 Tycho将清单条目视为构建依赖项。

但是我不知道如何在一个jar中打包所有这些依赖项。这也可能与osgi规范相冲突。但是如果你想忽略osgi,你可以尝试使用jar-with-dependencies程序集。