2012-10-05 48 views
8

我試圖讓一個maven管理項目,在命令行上運行。如何運行Maven生成JAR的CLI

我有一組在pom.xml依賴隨後將其下載並安裝在〜/ .m2目錄/庫/的。我已將必要的配置包含在我的pom中,以便將類路徑添加到jar清單。

現在的問題是我試圖這樣運行jar:Java的罐子項目SNAPSHOT.jar。

的Java找不到下載的依賴關係(我假設,因爲他們沒有在清單中列出的路徑?),但我不知道如何以最佳方式得到這個運行。

回答

5

選項1:
創建沒有依賴的jar文件的JAR。所以,你需要告訴Java的類路徑,所有的依賴罐子

java -cp /lcoation/of/dependency1.jar:/location/of/dependency2.jar:/location/of/dependency3.jar -jar project-SNAPSHOT.jar 

選項2:
的更容易,更好的解決方案是使用AppAssembler插件。它的作用是在包含

  1. 依賴jar的目錄結構封裝的罐子
  2. 創建的罐子
  3. 殼/ Windows的腳本來執行它

看看這裏http://www.mojohaus.org/appassembler/appassembler-maven-plugin/

方案3:
如果你不希望所有的行李,只是想有一個jar-with-dependency 你可能想在這裏提到How can I create an executable JAR with dependencies using Maven?

這將包含它內的所有依賴的罐子。


編輯1:對於選項1,Brad M提到,你可以使用dependency plugin所有項目的DEPS列表。 dependency:build-classpath

+0

啊你可以堅持下去。 – Nishant

+0

太棒了 - 這正是我所需要的。是否有任何警告與包裝一切這樣或一切都好。內存使用情況等? – Nick

+0

沒有什麼。它非常簡單的東西,與1.製作jar相同,2.將依賴項複製到repo文件夾中,3.編寫一個類似於以下內容的shell腳本:'java -jar ../myapp.jar Mainclass -cp ../repo/ * .jar' – Nishant

4
mvn exec:java -Dexec.mainClass="com.vineetmanohar.module.Main" -Dexec.classpathScope=runtime 

你可以在這裏找到更多的例子:3 ways to run Java main from Maven

+0

使用maven 3.0.4 不適用於我['ERROR]未知的生命週期階段「.mainClass = my.Main」 –

相關問題