2016-04-12 14 views
0

シンプルなので、私はこのアプリhttps://github.com/pac4j/spark-pac4j-demoを私のherokuインスタンスにデプロイしようとしています。私はそれをローカルに実行することができますherokuにmavenが見つかりません - Javaアプリケーションを実行するには?

mvn compile exec:java

しかし、Herokuの上、何Mavenのインストールはありません。

2016-04-12T18:34:21.074629+00:00 heroku[web.1]: Starting process with command `mvn compile exec:java` 
2016-04-12T18:34:23.303776+00:00 app[web.1]: bash: mvn: command not found 
2016-04-12T18:34:23.303620+00:00 app[web.1]: Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them. 

私は手あたりのすべてのクラスパスを設定する方法を見当もつかない。私はここでいくつかの助けに感謝します。

答えて

1

まず、依存関係をベンダーに(つまり、target/ディレクトリにコピーする)必要があります。あなたのpom.xmlにこれを追加することによってそうすることができます

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.4</version> 
    <executions> 
     <execution> 
     <id>copy-dependencies</id> 
     <phase>package</phase> 
     <goals><goal>copy-dependencies</goal></goals> 
     </execution> 
    </executions> 
    </plugin> 

を次にアプリを実行するための正しいコマンドは、おそらく(Mainpublic static void mainメソッドを含むクラスに置き換えてください)java -cp target/classes:target/dependency/* Mainのようなものになります。

ここにはsample app using Sparkがあります。これがどのようにまとめられているかが分かります。

Mavenは実稼働環境でアプリケーションを実行するための良い方法ではありません。これは、あなたのアプリケーションのための追加の依存関係を作成し、プロセスの実行に間接的な層を追加します。

+0

ありがとうございました!それは非常に助けになります。メインクラスがパッケージ内にある場合に、アプリケーションを実行するコマンドを指定できますか?例えばorg.pac4j.demo.spark – Oz123

+0

'java -cp ... org.pac4j.demo.spark.Main'のように、単にパッケージ名をプリペンドします。 – codefinger

関連する問題