2010-01-24 59 views
4

我有一個我用Maven製作的項目。我使用「mvn package」編譯JAR,現在我想運行它,最好不要設置一些瘋狂的classpath,因爲它依賴於Spring和一半的互聯網或其他東西。有什麼辦法可以輕鬆運行嗎?像「mvn run」這樣的東西會很棒,或者是將所有依賴關係放入jar中的選項,所以我可以做「java -jar」也會非常出色。運行jar,設置classpath

你如何處理這個問題,你建議做什麼?因爲導出基於〜/ .m2的CLASSPATH可能只會造成傷害;-)

+0

杜佩:http://stackoverflow.com/questions/1814526/problem-building-executable -jar-with-maven,http://stackoverflow.com/questions/2022032/building-a-runnable-jar-with-maven-2 – 2010-01-25 02:41:50

回答

9

使用Maven Assembly Plugin - 它會自動構建包含所有依賴關係的JAR,並且可以設置主類參數以使JAR可執行。

的文檔可能會造成混淆,所以這裏是你的POM將是什麼樣子的例子:

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.1</version> 
      <configuration> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
       <archive> 
        <manifest> 
         <mainClass>package.of.my.MainClass</mainClass> 
         <packageName>package.of.my</packageName> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

然後你就可以作爲運行:

mvn assembly:assembly 
+1

謝謝你的精彩答案。我從這個難題中遺漏的作品是「mvn assembly:assembly」:-) – niklassaers 2010-01-24 19:33:15

1

你會想看看Maven Assembly Plugin。然後,一旦你已經創建的插件所需的XML文件,並修改了POM文件與插件工作,你可以運行它:

mvn assembly:assembly 

這將創建一個所有依賴的JAR。

11

設置CLASSPATH和調用java -jar myjar.jar無論如何不會工作。因爲java -jar命令會忽略CLASSPATH環境變量以及-cp標誌。

在這種情況下,你必須在Class-Path鍵添加的類路徑條目的JAR的清單,如:

Class-Path: jar1-name jar2-name directory-name/jar3-name 
+0

這是一個非常有用的答案。 – n0nChun 2012-01-05 07:33:23