2012-03-29 17 views
6

私のコードはjarファイルにパッケージ化されていますmaven exec:java jarファイル内でクラスファイルを実行

jarファイルはパッケージ化されています。

jar -tfv target/test-1.0-SNAPSHOT.jar 

com/ 
com/codevalid/ 
com/codevalid/App.class 
log4j.xml 
META-INF/maven/com.codevalid/test/pom.xml 
META-INF/maven/com.codevalid/test/pom.properties 

彼らはMavenのexec:javaを使用してjarファイル内のクラスファイルを実行する方法exec:java

を使用して、個々のクラス・ファイルとして存在しているとき、私はそれらを実行することができますか?

+1

あなたの質問は何ですか? – magomi

+0

申し訳ありませんが、maven execを使ってjarファイル内でクラスファイルを実行するには: – codevalid

+0

これは役に立ちます。 http://stackoverflow.com/questions/42337857/mvn-execjava-to-run-a-java-file-in-an-external-jar-file – prime

答えて

3

jarファイルをexecプラグインへの依存として含める必要があります。このように:com.codevalid.Appクラスは現在のプロジェクトの一部としてコンパイルされている場合

<plugin> 
<groupId>org.codehaus.mojo</groupId> 
<artifactId>exec-maven-plugin</artifactId> 
<version>1.2.1</version> 
<executions> 
    <execution> 
    <phase>install</phase> 
    <goals> 
     <goal>java</goal> 
    </goals> 
    <configuration> 
     <mainClass>com.codevalid.App</mainClass> 
    </configuration> 
    </execution> 
</executions> 
<dependencies> 
    <dependency> 
    <groupId>myGroup</groupId> 
    <artifactId>test</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    </dependency> 
</dependencies> 

あなたはdependency宣言をスキップすることができます。

+1

こんにちは、情報ありがとうございますが、これはリポジトリ内のjarファイル私がしたかったのは、私がレポにインストールする前に、瓶をテストすることでした。この瓶の位置を指定することができる方法はありますか?exec:java – codevalid

5

これは私が最終的にやったことです。
私は私が

mvn exec:java -Dexec.mainClass="com.codevalid.App" 

を使用することもできましたが、私はの名前を渡す方法がわからなかったの代替を見やった

mvn assembly:single 

を使用してjarファイルを構築し、

java -jar ./target/App-1.0-SNAPSHOT-jar-with-dependencies.jar com.codevalid.App 

を使用クラスパスとしてjar

0

classpathScopeおよびincludePluginDependenciesまたはincludeProjectDependenciesクラスパス上のjarファイルを取得するためのパラメータ。ここで

例です。

  <configuration> 
       <executable>java</executable> 
       <mainClass>com.google.jstestdriver.JsTestDriver</mainClass> 
       <classpathScope>test</classpathScope> 
       <includePluginDependencies>true</includePluginDependencies> 
       <includeProjectDependencies>true</includeProjectDependencies> 
       <commandlineArgs>--port 9876</commandlineArgs> 
      </configuration> 
1

あなたは、いくつかのarguments追加することにより、exec:java目標を使用してjarファイルを実行することができます:あなたが実行可能なjarファイルを持っているし、したくない場合は

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.3.2</version> 
    <configuration> 
     <mainClass>org.example.Main</mainClass> 
     <arguments> 
      <argument>-jar</argument> 
      <argument>target/myJar-1.0-SNAPSHOT.jar</argument> 
     </arguments> 
    </configuration> 
</plugin> 

をエントリポイントを定義するには、executableを設定し、exec:execゴールを使用する必要があります。

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.3.2</version> 
    <configuration> 
     <executable>java</executable> 
     <arguments> 
      <argument>-jar</argument> 
      <argument>target/myJar-1.0-SNAPSHOT.jar</argument> 
     </arguments> 
    </configuration> 
</plugin> 
+0

'org.example.Main'クラスのmainメソッドにいくつかの引数を渡したいのですが? – prime

+1

@prime私はそれをテストしていませんが、[''](http://www.mojohaus.org/exec-maven-plugin/exec-mojo.html#commandlineArgs)を使って引数を実際のアプリケーションに渡す – Kapep

+0

提案をいただき、ありがとうございます。とにかく実際の問題http:// stackoverflowに答えました。com/questions/42337857/mvn-execjava-to-run-a-java-file-in-external-jar-file – prime

関連する問題