2012-06-18 27 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