2012-10-05 24 views
8

maven管理プロジェクトをコマンドラインで実行しようとしています。CLIでmaven生成されたjarを実行する方法

私はpom.xmlに一連の依存関係を持っていますが、これは〜/ .m2/repository /にダウンロードされてインストールされます。 jarマニフェストにクラスパスを追加するために必要な設定をpomに含めました。

これで問題は私がjarを実行しようとしていることです:java -jar project-SNAPSHOT.jar。

Javaはダウンロードされた依存関係を見つけることができません(マニフェストにパスがないためにリストされていると思われます)が、これを実行するにはどうすればよいか分かりません。

答えて

5

オプション1:
作成されたjarには依存するjarファイルがありません。
より簡単に、より良い解決策はAppAssemblerプラグインを使用することです:だから、あなたは、javaに依存するすべてのjarが

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

オプション2あるクラスパスを伝える必要があります。それは

  1. 依存するjar
  2. が含まれているディレクトリ構造であなたのjarファイルをパッケージ化しない何を作成したjarファイル
  3. はそれを

を実行するために

  • シェル/ウィンドウスクリプトは、こちらをご覧http://www.mojohaus.org/appassembler/appassembler-maven-plugin/

    を持っています

    オプション3:
    手荷物をすべて欲しがらず、ただ持ちたいと思ったら、jar-with-dependency こちらを参照してください。How can I create an executable JAR with dependencies using Maven?

    これには、その中のすべての依存jarが含まれます。


    編集1:オプション1については、Brad Mはあなたがdependency pluginを使用して、すべてのプロジェクトのDEPSのリストを得ることができることを述べました。 dependency:build-classpath

  • +0

    ああすることができます。 – Nishant

    +0

    驚くばかり - それは私が必要としていたものです。このようなものをすべて梱包している警告がありますか、それとも問題ありませんか?メモリ使用量など? – Nick

    +0

    いいえ、何もありません。その非常に単純なもの、1. jarの作成と同じ2. repoフォルダ内の依存ファイルのコピー、3.このようなシェルスクリプトの書き込み '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 "' –

    関連する問題