web-dev-qa-db-ja.com

Mavenを使用してプログラムを実行するにはどうすればよいですか?

Mavenの目標がJavaクラスの実行をトリガーするようにします。私はMakefileを次の行で移行しようとしています:

neotest:
    mvn exec:Java -Dexec.mainClass="org.dhappy.test.NeoTraverse"

そして、mvn neotestmake neotestが現在行っていることを生成したいと思います。

execプラグインのドキュメントMaven Antタスク ページにも、簡単な例はありませんでした。

現在、私は:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.1</version>
  <executions><execution>
    <goals><goal>Java</goal></goals>
  </execution></executions>
  <configuration>
    <mainClass>org.dhappy.test.NeoTraverse</mainClass>
  </configuration>
</plugin>

ただし、コマンドラインからプラグインをトリガーする方法はわかりません。

110
Will

Exec-maven-pluginに対して定義したグローバル構成を使用:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.4.0</version>
  <configuration>
    <mainClass>org.dhappy.test.NeoTraverse</mainClass>
  </configuration>
</plugin>

コマンドラインでmvn exec:Javaを呼び出すと、クラスorg.dhappy.test.NeoTraverseを実行するように構成されたプラグインが呼び出されます。

そのため、コマンドラインからプラグインをトリガーするには、次を実行します。

mvn exec:Java

ここで、標準ビルドの一部としてexec:Java目標を実行する場合、目標を デフォルトの特定のphaseにバインドする必要があります。ライフサイクル 。これを行うには、phase要素で目標をバインドするexecutionを宣言します。

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.4</version>
  <executions>
    <execution>
      <id>my-execution</id>
      <phase>package</phase>
      <goals>
        <goal>Java</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <mainClass>org.dhappy.test.NeoTraverse</mainClass>
  </configuration>
</plugin>

この例では、packageフェーズでクラスが実行されます。これは単なる例であり、ニーズに合わせて調整してください。プラグインバージョン1.1でも動作します。

135
Pascal Thivent

複数のプログラムを実行するために、profilesセクションも必要でした。

<profiles>
  <profile>
    <id>traverse</id>
    <activation>
      <property>
        <name>traverse</name>
      </property>
    </activation>
    <build>
      <plugins>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <configuration>
            <executable>Java</executable>
            <arguments>
              <argument>-classpath</argument>
              <classpath/>
              <argument>org.dhappy.test.NeoTraverse</argument>
            </arguments>
          </configuration>
        </plugin>
      </plugins>
    </build>
  </profile>
</profiles>

これは、次のように実行可能です。

mvn exec:exec -Dtraverse
22
Will