1

ねえ、私はデプロイpojoプラグインを持っています(リモートサーバーにwarをデプロイします)。pom定義のビルドセクションにremote-deployプラグインがあります。deploy-remoteゴールの前にパッケージフェーズをトリガーする必要があります。リモートサーバーにセキュアコピーする前に、戦争がすでに作成されているためです。

実行要素(ドキュメントによる)を使用すると、目標を特定のフェーズに関連付けることができます。たとえば、後のフェーズにバインドすることができます。したがって、私の場合は、フェーズをインストールします...しかし、これは単なる回避策です。

  <build>
    <plugins>
      <plugin>
        <groupId>sample.plugin</groupId>
        <artifactId>maven-hello-plugin</artifactId>
        <version>1.0-SNAPSHOT</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>sayhi</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

簡単に言えば、目標のみをビルドセクションに配置して実行すると、パッケージフェーズは以前は実行されません。助けてください

4

2 に答える 2

1

Maven Mojo プラグイン、この目標の前にトリガーする必要があるフェーズを定義する方法は?

できません。

pom 定義のビルド セクションに remote-deploy プラグインがあります。デプロイ リモート ゴールの前にパッケージ フェーズをトリガーする必要があります。これは、リモート サーバーにセキュア コピーする前に戦争がすでに作成されているためです。

それをフェーズにバインドするだけで、デフォルトでゴールがバインドさpackageれた後にゴールが呼び出さpackageれます(したがって、戦争はそこにあります)。

次のように構成された Maven AntRun プラグインを使用したこの動作を示す例を次に示します。

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
      <execution>
        <phase>package</phase>
        <configuration>
          <target>
            <echo message="Hi!!!!!"/>
          </target>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

そしての出力mvn package

$ mvn パッケージ
[情報] プロジェクトをスキャンしています...
[情報]                                                                         
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[INFO] 建物 Q3934833 Maven Webapp 1.0-SNAPSHOT
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
...
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ Q3934833 ---
[情報] コンパイルするソースがありません
[情報]
[INFO] --- maven-surefire-plugin:2.5:test (default-test) @ Q3934833 ---
[情報] 実行するテストはありません。
[情報]
[INFO] --- maven-war-plugin:2.1:war (default-war) @ Q3934833 ---
[情報] webapp のパッケージ化
[INFO] [/home/pascal/Projects/stackoverflow/Q3934833/target/Q3934833] で webapp [Q3934833] をアセンブルしています
[INFO] 処理中の戦争プロジェクト
[情報] webapp リソースのコピー [/home/pascal/Projects/stackoverflow/Q3934833/src/main/webapp]
[情報] [317 ミリ秒] で組み立てられた Web アプリケーション
[情報] ビルド戦争: /home/pascal/Projects/stackoverflow/Q3934833/target/Q3934833.war
[情報] WEB-INF/web.xml は既に追加されています。スキップします
[情報]
[情報] --- maven-antrun-plugin:1.6:run (デフォルト) @ Q3934833 ---
[INFO] タスク実行中

主要:
     [エコー] こんにちは!!!!!
[情報] 実行されたタスク
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[情報] ビルド成功
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
...

予想どおり、 antrun プラグインは の後packageに実行されます。

于 2010-10-14T15:39:02.690 に答える
0

@Mojo アノテーションで PREPARE_PACKAGE フェーズを使用してみることができます。

@Mojo(name = "myName", defaultPhase = LifecyclePhase.PREPARE_PACKAGE)
于 2013-06-25T05:00:51.683 に答える