我有一個我用Maven製作的項目。我使用「mvn package」編譯JAR,現在我想運行它,最好不要設置一些瘋狂的classpath,因爲它依賴於Spring和一半的互聯網或其他東西。有什麼辦法可以輕鬆運行嗎?像「mvn run」這樣的東西會很棒,或者是將所有依賴關係放入jar中的選項,所以我可以做「java -jar」也會非常出色。運行jar,設置classpath
你如何處理這個問題,你建議做什麼?因爲導出基於〜/ .m2的CLASSPATH可能只會造成傷害;-)
我有一個我用Maven製作的項目。我使用「mvn package」編譯JAR,現在我想運行它,最好不要設置一些瘋狂的classpath,因爲它依賴於Spring和一半的互聯網或其他東西。有什麼辦法可以輕鬆運行嗎?像「mvn run」這樣的東西會很棒,或者是將所有依賴關係放入jar中的選項,所以我可以做「java -jar」也會非常出色。運行jar,設置classpath
你如何處理這個問題,你建議做什麼?因爲導出基於〜/ .m2的CLASSPATH可能只會造成傷害;-)
使用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
謝謝你的精彩答案。我從這個難題中遺漏的作品是「mvn assembly:assembly」:-) – niklassaers 2010-01-24 19:33:15
你會想看看Maven Assembly Plugin。然後,一旦你已經創建的插件所需的XML文件,並修改了POM文件與插件工作,你可以運行它:
mvn assembly:assembly
這將創建一個所有依賴的JAR。
設置CLASSPATH
和調用java -jar myjar.jar
無論如何不會工作。因爲java -jar
命令會忽略CLASSPATH
環境變量以及-cp
標誌。
在這種情況下,你必須在Class-Path
鍵添加的類路徑條目的JAR的清單,如:
Class-Path: jar1-name jar2-name directory-name/jar3-name
這是一個非常有用的答案。 – n0nChun 2012-01-05 07:33:23
杜佩: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