2

今日、(Maven リリース プラグインを使用して) リリースを準備しているときに、Maven 3 で奇妙な動作が見られました。説明が長くなりがちなので、説明の直前に質問をさせてください。

リリースプラグインを使用するにはどうすればよいですか

  • ビルドフォークが正しい順序でプラグインを実行するように
  • 同じプラグインを複数回実行することなく#
  • Mojo の有効な plugin.xml を取得します。

リリースされるアーティファクトは、Maven プラグイン自体 (Mojo with Annotations) です。release:prepare ゴールを呼び出すと、最初にインタラクティブ モードでプロセスが開始され、リリースの新しいバージョン データが要求されます。その後、リリースされるはずのプロジェクトで「クリーン検証」を行う新しいプロセスをフォークします。

コンソール出力で説明されているように、呼び出しの実行順序は次のとおりです。

  1. 掃除
  2. plugin:descriptor (Maven-plugin-plugin)
  3. 資力
  4. コンパイル
  5. テストリソース
  6. テストコンパイル
  7. テスト

コンパイルが行われていないため、plugin:descriptor が Mojo を見つけられないようです。

[INFO] [INFO] --- maven-plugin-plugin:3.2:descriptor (default-descriptor) @ concordion-maven-plugin ---
[INFO] [WARNING] Using platform encoding (Cp1252 actually) to read mojo metadata, i.e. build is platform dependent!
[INFO] [INFO] Applying mojo extractor for language: java-annotations
[INFO] [INFO] Mojo extractor for language: java-annotations found 0 mojo descriptors.

正しい方法で構成すると、mojo が見つからないためにプラグインが失敗します。

を使用して明示的にコンパイルの目標を呼び出すようにリリース プラグインを構成すると、

<preparationGoals>clean compile verify</preparationGoals>

プラグインの実行順序は次のように変更されます。

  1. 掃除
  2. plugin:descriptor (Maven-plugin-plugin)
  3. 資力
  4. コンパイル
  5. plugin:descriptor (今回は Mojo アノテーションを見つけます)
  6. 資力
  7. コンパイル
  8. テストリソース
  9. テストコンパイル
  10. テスト

Mojo が見つかると、すべての必要なデータを含む plugin.xml が作成されます。

これは、私の pom のビルド セクション全体です。

<build>
    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.0</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <showDeprecation>true</showDeprecation>
                <showWarnings>true</showWarnings>
                <fork>false</fork>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-plugin-plugin</artifactId>
            <version>3.2</version>
            <executions>
                <execution>
                    <goals>
                        <goal>
                            descriptor
                        </goal>
                    </goals>
                    <phase>prepare-package</phase>
                </execution>
            </executions>
            <configuration>
                <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <dryRun>true</dryRun>
                <preparationGoals>clean compile verify</preparationGoals>
                <goals>deploy</goals>
            </configuration>
        </plugin>
    </plugins>
</build>
4

0 に答える 0