2012-02-23 29 views
1

我正在使用Maven來管理控制檯應用程序項目。在我的機器上,我輸入mvn exec:java,Maven處理所有內容。然而,我想要的是在沒有Maven幫助的情況下在另一臺機器上執行相同的應用程序。Maven:如何生成獨立應用程序?

在NetBeans中,Ant項目的dist目錄包含所有必需的文件。您只需鍵入java -jar dist/App.jar即可。我如何讓Maven生成這樣的可分發目錄或存檔?

PS:雖然看起來相關,但這不是Create a standalone application with Maven的重複。

+0

好吧,其實,這是你的問題的精確副本指向。 – gizmo 2012-02-23 15:12:53

+0

@ gizmo _這個問題可能是相似的,但是我所尋找的答案是相當不同的。 – 2012-02-23 15:57:59

回答

4

我已經在maven中使用過。

http://mojo.codehaus.org/appassembler/appassembler-maven-plugin/

應用程序組裝插件是一個Maven插件用於生成腳本用於啓動Java應用程序。項目本身的所有依賴項和工件都放置在定義的彙編目錄中生成的Maven倉庫中。所有工件(依賴項+工程中的工件)都會添加到生成的bin腳本中的類路徑中。

http://maven.apache.org/plugins/maven-assembly-plugin/

大會插件的Maven的主要目的是允許用戶使用它的依賴,模塊,網站文檔和其他文件一起聚集項目輸出到單個分發歸檔。

+0

這是在Maven中這樣做的正確方法。 – khmarbaise 2012-02-23 15:24:56

+0

@khmarbaise出於興趣,你喜歡第一還是第二?我已經在不同的環境中使用過。 – 2012-02-23 15:40:37

+0

我試過'maven-assembly-plugin'(看起來更官方),它的工作!但花了一些時間來構建該jar文件。 – 2012-02-23 15:55:49

1

您可以使用maven-jar-plugin構建一個可執行的jar文件;他們的例子頁面這裏更多的信息:http://maven.apache.org/shared/maven-archiver/examples/classpath.html

這將簡單地創建一個全功能於一身的罐子,可以通過Java執行的罐子

+0

我已經使用'maven-jar-plugin',但生成的jar似乎不是「一體化」。當我執行它時,我得到'NoClassDefFoundError's。我想念什麼? – 2012-02-23 15:20:50

+0

在默認範圍內定義的任何依賴項都應該重新打包到jar中。如果您對提供的範圍有依賴關係,則不會包含它們(因爲它們被假定爲在執行環境中提供,例如要部署在TomCat EE env中的EE項目中的EE-jar)。 – Yhn 2012-02-23 15:24:16

+0

我也這麼認爲,我給了它另一個機會,但沒有運氣。我正在使用twitter4j庫。 Maven下載並安裝它沒有問題。但'java -jar'無法在目標jar文件中找到'twitter4j.StatusListener'類。 – 2012-02-23 15:48:12