2012-06-18 25 views

回答

0

您将在您的pom.xml文件中包含以下内容。

<build> 
<plugins> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
      <archive> 
       <manifest> 
        <mainClass>MainClass with the packages</mainClass> 
       </manifest> 
      </archive> 
      <descriptorRefs> 
       <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
     </configuration> 
    </plugin> 
</plugins> 

+4

感谢您的建议,但我想做一个jar说jarFinal.jar包含jar1.jar,jar2.jar,jar3.jar等。给出的建议使得一个jar从依赖jar中提取所有的类文件。我想在不打开类文件的情况下制作一罐罐子。 – sridhar

0

如果您正在尝试创建一个包含您的应用程序并且它是必需的库的jar文件,那么有两种方式(我知道这样做)。第一个是One-Jar,它使用特殊的类加载器来实现罐子的嵌套。第二个是UberJar(或Shade),它会展开包含的库并将所有类放在顶层jar中。

我还应该提到,UberJar和Shade分别是Maven1和Maven2的插件。如下所述,您还可以使用程序集插件(实际上它更强大,但要正确配置要困难得多)。

+0

谢谢你的建议,但我想提出一个罐子说jarFinal.jar包含jar1.jar,jar2.jar,jar3.jar等。给出的建议使得一个jar从依赖jar中提取所有的类文件。我想在不打开类文件的情况下制作一罐罐子。 – sridhar

+0

@sridhar听起来像One-Jar会满足您的要求。 –

+0

One-Jar有一个Maven插件:http://onejar-maven-plugin.googlecode.com/svn/mavensite/usage.html – Thilo

0

使用shade插件:

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-shade-plugin</artifactId> 
    <version>1.7</version> 
<executions> 
    <execution> 
    <phase>package</phase> 
    <goals> 
     <goal>shade</goal> 
    </goals> 
    </execution> 
</executions> 
</plugin> 
+0

感谢您的建议,但我想做一个jar说jarFinal.jar包含jar1.jar,jar2.jar,jar3.jar等。给出的建议使一个jar从依赖jar提取所有类文件。我想在不打开类文件的情况下制作一罐罐子。 – sridhar