質問

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top