12

Maven インストール フェーズ後に単純な exec コマンドを実行したいと考えています。これを達成するための最も簡単な方法は何ですか? (新しいプラグインを追加することなく)

4

2 に答える 2

19

このコマンドを通常のビルド ライフサイクルの一部として実行する場合は、フェーズで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:execafterを明示的に呼び出す必要があります。install

于 2010-01-05T18:40:13.450 に答える
5

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プロジェクトで採用している一般的な戦略は、「疑わしい場合は別のモジュールを作成する」です。

于 2010-01-05T15:33:53.217 に答える