質問
Maven のインストールフェーズ後に単純な exec コマンドを実行したいと考えています。これを達成する最も簡単な方法は何でしょうか?(新しいプラグインを追加する必要はありません)
解決
このコマンドを通常のビルド ライフサイクルの一部として実行する場合は、 exec
のゴール install
段階:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<id>my-exec</id>
<phase>install</phase>
<goals>
<goal>exec</goal>
</goals>
<inherited>false</inherited>
</execution>
</executions>
<configuration>
<executable>COMMAND</executable>
</configuration>
</plugin>
</plugins>
</build>
上記の構成を使用して簡単なテストを実行しました(使用 ls
"COMMAND" として)、新しく作成された Maven プロジェクトを使用して実行中 mvn install
次の出力が生成されます。
$ mvn install [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building maven-exec-testcase [INFO] task-segment: [install] [INFO] ------------------------------------------------------------------------ ... [INFO] [install:install {execution: default-install}] [INFO] Installing /home/pascal/Projects/maven-exec-testcase/target/maven-exec-testcase-1.0-SNAPSHOT.jar to /home/pascal/.m2/repository/com/mycompany/app/maven-exec-testcase/1.0-SNAPSHOT/maven-exec-testcase-1.0-SNAPSHOT.jar [INFO] [exec:exec {execution: my-exec}] [INFO] pom.xml [INFO] src [INFO] target [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 12 seconds [INFO] Finished at: Tue Jan 05 19:26:04 CET 2010 [INFO] Final Memory: 11M/75M [INFO] ------------------------------------------------------------------------
ご覧のとおり、コマンドが実行されます 最後に の install
フェーズ (アーティファクトをローカル リポジトリにコピーした後)。
そして、本当にスニペットを pom に追加したくない場合は、明示的に呼び出す必要があります exec:exec
後 install
wheyley が提案したように、コマンドライン上で。
他のヒント
Maven のデフォルトのライフサイクルは次で終了します。 インストール そして 展開する 目標 - これらの目標には事前バージョンと事後バージョンはありません。
考えられるオプションは次のとおりです。
exec:exec mojo をデプロイフェーズにバインドします。デプロイフェーズは実際にはアーティファクトをリモート Maven リポジトリにデプロイすることを目的としているため、その考えには警告します。
mvn 呼び出しのインストール目標の後に exec:exec mojo を実行します...例えば。:
mvn clean install exec:exec -Dexec.executable="yourcommand" -Dexec.args="arguments"
マルチモジュール プロジェクトがある場合は、<modules> の最後に別のモジュールを作成し、そのモジュール内の通常のゴールのいずれかに exec:exec をバインドします。これにより、他のモジュールを想定して、この特定のモジュールが最後に実行されるようになります。 原子炉が検討する基準 満たされていない。私が取り組んでいる Maven プロジェクトで採用している一般的な戦略は、「疑わしい場合は別のモジュールを作成する」です。