Maven インストール フェーズ後に単純な exec コマンドを実行したいと考えています。これを達成するための最も簡単な方法は何ですか? (新しいプラグインを追加することなく)
2 に答える
このコマンドを通常のビルド ライフサイクルの一部として実行する場合は、フェーズで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 インストール [情報] プロジェクトをスキャンしています... [情報] - - - - - - - - - - - - - - - - - - - - - - - - ------------------------- [情報] maven-exec-testcase のビルド [情報] タスク セグメント: [インストール] [情報] - - - - - - - - - - - - - - - - - - - - - - - - ------------------------- ... [INFO] [install:install {execution: default-install}] [INFO] /home/pascal/Projects/maven-exec-testcase/target/maven-exec-testcase-1.0-SNAPSHOT.jar を /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}] [情報] pom.xml [情報] ソース [情報] ターゲット [情報] - - - - - - - - - - - - - - - - - - - - - - - - ------------------------- [情報] ビルド成功 [情報] - - - - - - - - - - - - - - - - - - - - - - - - ------------------------- [情報] 合計時間: 12 秒 [情報] 終了: 2010 年 1 月 5 日火曜日 19:26:04 CET [情報] 最終記憶: 11M/75M [情報] - - - - - - - - - - - - - - - - - - - - - - - - -------------------------
ご覧のとおり、コマンドはフェーズの最後 (アーティファクトをローカル リポジトリにコピーした後) に実行されますinstall
。
また、スニペットを pom に追加したくない場合は、whaley で提案されているように、コマンド ラインでexec:exec
afterを明示的に呼び出す必要があります。install
Maven のデフォルトのライフサイクルは、インストールとデプロイの目標で終了します。これらの目標の前バージョンと後バージョンはありません。
考えられるオプションは次のとおりです。
exec:exec mojo を deploy フェーズにバインドします。デプロイ フェーズは実際にはアーティファクトをリモートの Maven リポジトリにデプロイすることを目的としているため、その考えに対して警告します。
mvn 呼び出しの install ゴールの後に exec:exec mojo を実行します。例:
mvn clean install exec:exec -Dexec.executable="yourcommand" -Dexec.args="arguments"
マルチモジュール プロジェクトがある場合は、 <modules> の最後に別のモジュールを作成し、そのモジュール内の通常のゴールのいずれかに exec:exec をバインドします。これにより、reactor が参照する他の基準が満たされない場合、この特定のモジュールが最後に実行されます。私が取り組んでいるMavenプロジェクトで採用している一般的な戦略は、「疑わしい場合は別のモジュールを作成する」です。