3

POMファイルには次の設定があります。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <skip>true</skip>
    </configuration>
    <executions>
        <execution>
            <id>surefire-it</id>
            <phase>integration-test</phase>
            <goals>
                <goal>test</goal>
            </goals>
            <configuration>
                <skip>false</skip>
            </configuration>
        </execution>
    </executions>
</plugin>

これにより、テストフェーズ中にテストが実行されないことが保証されます。テストは、統合テストフェーズ中にのみ実行されます。

ただし、リリースの準備(release:prepare)を行うと、Mavenはテストフェーズでテストを実行します。これにより、統合テストフェーズでのみテストを実行できるため、ビルドが失敗します(テストを実行する前に、tomcat-mavenプラグインを使用してパッケージ化されたwarをデプロイします)。

パラメータ(-DskipTestsなど)を渡すことでテストをスキップできることを知っています。テストをスキップするのではなく、release:prepareを他のMavenゴールと同じように実行するだけです。

どんな提案/助けも大歓迎です。

4

4 に答える 4

2

maven-failsafe-pluginを統合テストに使用し、単体テストには保持maven-surefire-pluginします。

これにより、単体テストが統合テストから完全に分離され (したがって、個別にオフにすることができます)、統合テストが「ビルド ライフサイクルのフェーズintegration-testとフェーズ」で実行されることが保証されます。verify

于 2012-10-11T16:24:35.593 に答える
2

デフォルトではアクティブになっていない別のプロファイルに統合テストを追加します。トリガー ルールなどを追加します。次に、必要に応じて統合テストを使用してビルドを呼び出します。たとえば、CI (Jenkins/Hudson、TeamCity、Bamboo など) でプロファイルがトリガーされました。

あなたが現在直面している問題は、2 種類のテストを区別していないことと、いつ実行する必要があるかということです。実行するフェーズを定義しただけです。これは、Maven が何をしたいのかを理解するのに十分な実行コンテキストの知識ではなく、リリース中にもそれらを呼び出します。

于 2012-10-11T14:00:49.747 に答える
2

別のアプローチを試して、-DskipTests毎回指定する必要がないように、リリースプラグインを常に引数として使用するように構成しようとします。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin<artifactId>
    <configuration>
        <arguments>-DskipTests</arguments>
    </configuration>
</plugin>

理論的には、これは、およびゴールが実行する Maven のサブ実行に渡す-DskipTests引数に追加する必要があります。preparerelease

于 2012-10-11T15:14:37.737 に答える
2

maven-surefire-pluginduringtestフェーズを完全に無効にする、より一般的な方法を試してください。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <executions>
        <execution>
            <id>default-test</id>
            <!-- Disable the default-test by putting it in phase none -->
            <phase>none</phase>
        </execution>
        <execution>
            <!-- Enable the test during integration-test phase -->
            <id>surefire-it</id>
            <phase>integration-test</phase>
            <goals>
                <goal>test</goal>
            </goals>
        </execution>
    </executions>
</plugin>

編集

これは、mvn release:prepare上記で構成された確実なプラグインを使用したドライランの出力です。

C:\Users\maba\Development\svn\local\stackoverflow\Q12840869>mvn リリース:prepare -DdryRun
[情報] プロジェクトをスキャンしています...
[情報]
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[情報] 建物 Q12840869-1.0-SNAPSHOT 1.0-SNAPSHOT
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[情報]
[INFO] --- maven-release-plugin:2.0:prepare (default-cli) @ Q12840869 ---
[情報] フェーズ 'scm-check-modifications' からのリリースを再開しています
[情報] ローカルの変更がないことを確認しています...
[INFO] 実行中: cmd.exe /X /C "svn --non-interactive status"
[情報] 作業ディレクトリ: C:\Users\maba\Development\svn\local\stackoverflow\Q12840869
[情報] スナップショットの依存関係とプラグインを確認しています...
「Q12840869-1.0-SNAPSHOT」のリリース バージョンは何ですか? (com.stackoverflow:Q12840869) 1.0: :
「Q12840869-1.0-SNAPSHOT」の SCM リリース タグまたはラベルは何ですか? (com.stackoverflow:Q12840869) Q12840869-1.0: :
「Q12840869-1.0-SNAPSHOT」の新開発バージョンは?(com.stackoverflow:Q12840869) 1.1-スナップショット: :
[情報] 'Q12840869-1.0-SNAPSHOT' を変換しています...
[情報] リリース POM を生成していません
[INFO] 準備目標の実行 - これはシミュレーション モードであるため、書き換えられたプロジェクトではなく、元のプロジェクトに対して実行されます
[情報] 目標「クリーン検証」を実行しています...
[警告] Maven はインタラクティブ モードで実行されますが、この MavenInvoker インスタンスには入力ストリームが構成されていません。
[情報] [情報] プロジェクトをスキャンしています...
[情報] [情報]
【情報】【情報】------------------------------------------------ ----------------------------
[情報] [情報] 建物 Q12840869-1.0-SNAPSHOT 1.0-SNAPSHOT
【情報】【情報】------------------------------------------------ ----------------------------
[情報] [情報]
[INFO] [INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ Q12840869 ---
[情報] [情報] C:\Users\maba\Development\svn\local\stackoverflow\Q12840869\target を削除しています
[情報] [情報]
[INFO] [INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ Q12840869 ---
[情報] [情報] 'UTF-8' エンコーディングを使用して、フィルター処理されたリソースをコピーしています。
[情報] [情報] 0 リソースをコピーしています
[情報] [情報]
[INFO] [INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ Q12840869 ---
[情報] [情報] 1 つのソース ファイルを C:\Users\maba\Development\svn\local\stackoverflow\Q12840869\target\classes にコンパイルしています
[情報] [情報]
[INFO] [INFO] --- maven-resources-plugin:2.4.3:testResources (default-testResources) @ Q12840869 ---
[情報] [情報] 'UTF-8' エンコーディングを使用して、フィルター処理されたリソースをコピーしています。
[INFO] [INFO] 存在しない resourceDirectory C:\Users\maba\Development\svn\local\stackoverflow\Q12840869\src\test\resources をスキップ
[情報] [情報]
[INFO] [INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ Q12840869 ---
[INFO] [INFO] 1 つのソース ファイルを C:\Users\maba\Development\svn\local\stackoverflow\Q12840869\target\test-classes にコンパイルしています
[情報] [情報]
[INFO] [INFO] --- maven-jar-plugin:2.3.1:jar (default-jar) @ Q12840869 ---
[情報] [情報] jar の構築: C:\Users\maba\Development\svn\local\stackoverflow\Q12840869\target\Q12840869-1.0-SNAPSHOT.jar
[情報] [情報]
[INFO] [INFO] --- maven-surefire-plugin:2.7.2:test (surefire-it) @ Q12840869 ---
[情報] [情報] Surefire レポート ディレクトリ: C:\Users\maba\Development\svn\local\stackoverflow\Q12840869\target\surefire
-レポート
[情報]
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - --------
[情報] テスト
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - --------
[情報] com.stackoverflow.MainTest を実行しています
[情報] テストの実行: 1、失敗: 0、エラー: 0、スキップ: 0、経過時間: 0.041 秒
[情報]
[情報] 結果:
[情報]
[情報] テストの実行: 1、失敗: 0、エラー: 0、スキップ: 0
[情報]
【情報】【情報】------------------------------------------------ ----------------------------
[情報] [情報] ビルド成功
【情報】【情報】------------------------------------------------ ----------------------------
[情報] [情報] 合計時間: 5.102 秒
[INFO] [INFO] 終了時刻: Thu Oct 11 17:10:29 CEST 2012
[情報] [情報] 最終記憶: 13M/147M
【情報】【情報】------------------------------------------------ ----------------------------
于 2012-10-11T14:11:08.033 に答える