web-dev-qa-db-ja.com

Mavenビルドライフサイクル:検証

Mavenのビルドライフサイクルで、validateフェーズがvalidateプロジェクトとして記述されていることを確認しましたビルドを完了することができます
1。プロジェクトのチェックポイントは何ですかcorrect
2。これらは何ですか必要な情報ビルドを完了するために利用可能である必要がありますか?
両方の例を提供できますか?

2
Dee

短い答え

  1. それはあなた次第です
  2. それはあなた次第です

長い答え

どうして?デフォルト(つまり、ユーザー定義のプラグインのゴールがないクリーンで空のプロジェクト)では、mvn validateは何もしません。

どうして?ビルドフェーズはプラグインの目標で構成されています。フェーズの目標はありませんか?フェーズは何もしません。

ビルドライフサイクルの概要 ガイドの ビルドライフサイクルの基本 セクションから:

さらに、ビルドフェーズには、0個以上の目標をバインドすることもできます。ビルドフェーズにバインドされた目標がない場合、そのビルドフェーズは実行されません。ただし、1つ以上の目標がバインドされている場合は、それらの目標をすべて実行します。

つまり、validateフェーズにバインドされているプラ​​グインのゴールを宣言しない限り、validateフェーズは何もしません。

あなたが見つけた定義は、何かがビルドフェーズ中に発生すると言っているのではなく、むしろアクションをビルドライフサイクルのそのフェーズ(つまり、ステップ)で発生させたい場合、それが目標をバインドするフェーズです。

プロジェクトが正しいこと、およびビルドを完了するために必要なすべての情報が利用可能であることを検証します

これは、プラグインを期待どおりの順序で効率的に実行できるようにプラグインを編成する方法のガイドラインです。

たとえば、ビルドプラグインが定義されていない新しい空のMavenプロジェクトがあるとします。 mvn verifyを実行すると、Mavenは検証フェーズまでの各ビルドフェーズをクリックしていきます。出力が空であることを期待するかもしれませんが、デフォルト Built-in Lifecycle Bindings があるため、出力にはすべてのデフォルトの目標が含まれます。

[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ MavenTest ---
...
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ MavenTest ---
...
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ MavenTest ---
...
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ MavenTest ---
...
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ MavenTest ---

あなたにとって、「正しい」プロジェクトの指標は、コードのスタイルがいくつかの基準を満たしていることである可能性があります。したがって、空のMavenプロジェクトに maven-checkstyle-plugin を追加するとします。

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>2.17</version>
    <executions>
        <execution>
            <id>verify-style</id>
            <phase>validate</phase>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
    </executions>
</plugin>

...次にmvn verifyを再実行します。

[INFO] --- maven-checkstyle-plugin:2.17:check (verify-style) @ MavenTest ---
...
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ MavenTest ---
...
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ MavenTest ---
...
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ MavenTest ---
...
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ MavenTest ---
...
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ MavenTest ---

プラグインを宣言し、validateフェーズの一部として実行するように指示したため、validateフェーズは実際に何かを実行します。

ポイントをさらに説明するために、プラグインを再度削除してmvn validateを実行すると、validateフェーズにデフォルトのバインディングがないため、何も起こらないことがわかります。

C:\workspace\MavenTest>mvn validate
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building MavenTest 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.078s
[INFO] Finished at: Thu Jun 30 11:56:54 CDT 2016
[INFO] Final Memory: 2M/15M
[INFO] ------------------------------------------------------------------------

「必要な情報」が利用可能であることを確認する例として、プロジェクト内の特定の設定ファイルに特定の情報があることを確認する場合があります。繰り返しますが、それは実際にあなたのユースケースに基づいてあなた次第です。

3
avojak