5

Jarsが作成された後にカスタムコマンドを実行するために、execプラグインを実行したいマルチモジュールのmaven Javaプロジェクトがあります。

親 POM でmaven パッケージ assembly:assembly exec:execを呼び出して、プロジェクト出力を作成します。

親POMで次を使用しました:

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <configuration>
            <executable>myExecutable.exe</executable>
            <workingDirectory>${basedir}</workingDirectory>
            <arguments>....</arguments>
        </configuration>
    </plugin>

そうするとき、実行可能ファイルは正しく実行されましたが、すべての子モジュールに対しても実行されました。

試して修正するために、子モジュールに継承されないようにプラグインを設定しました。

<inherited>false</inherited>

しかし、現在、exec プラグインはThe parameters 'executable' for goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec are missing or invalidエラーで失敗します。

「executions」要素の下で実行するようにプラグインを設定し、Maven ライフ サイクル フェーズに割り当てようとしました。これにより、実行可能ファイルが正常に実行されましたが、この実行プラグインを実行する前に他のプラグイン (アセンブリ プラグイン) を実行する必要があるため、実行できません。

パッケージ フェーズが完了し、他のプラグイン (アセンブリ) も完了した後に、この (実行) プラグインを 1 回だけ実行するにはどうすればよいですか?

つまり、すべての子モジュールに対して「パッケージ」を実行してから、親モジュールから exec プラグインを 1 回だけ実行したいと考えています。

どんな助けにも感謝します。

4

2 に答える 2

1

親 POM レベルでコマンドを実行すると、すべてのモジュールのライフサイクルのその部分を呼び出すように Maven に指示されます。

子モジュールに対してのみ exec:exec を呼び出したい場合は、子モジュールに対してのみそのプラグインを宣言し (親を継承する他のモジュールには意味がないため)、--projectsor-pl引数を使用して Maven を呼び出す必要があります。

mvn -pl 子パッケージ アセンブリ:アセンブリ exec:exec

このコマンドは、親プロジェクトから実行するpackage assembly:assembly exec:execと、子プロジェクトに対してのみ実行されます。

ただし、実際に達成しようとしているpackageのは、単一のコマンドですべてのモジュールを実行できることであり、フェーズ中にその子モジュールに対してassembly:assemblyexec:execゴールを実行する場合は、これらのプラグインをそのフェーズにバインドします。 . 例えば:package

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <configuration>
        <executable>myExecutable.exe</executable>
        <workingDirectory>${basedir}</workingDirectory>
        <arguments>....</arguments>
    </configuration>
    <executions>
        <!-- run the exec goal of this plugin every time this module is packaged -->
        <execution>
            <phase>package</phase>
            <goals><goal>exec</goal></goals>
        </execution>
    </executions>
</plugin>
于 2013-06-04T14:47:31.163 に答える
0

exec-maven-pluginこれにより、以前に構成された実行の継承がスキップされます。

<build>
  <pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <executions>
          <execution>
            <phase>none</phase>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </pluginManagement>
  ...
</build>
于 2016-08-10T06:44:58.143 に答える