9

統合テストライフサイクルを呼び出す場合、アプリケーションのテスト中にプロパティファイルからの認証データが開発者によって提供されているかどうかを Maven で確認したいと思います。

状態の一般的な慣行として、認証データをソース ツリーにコミットするのは良くありません。ユーザー名やパスワードなどの設定で説明されている標準の Maven アプローチは、 pom.xml と一緒に配布しないでください。

しかし、私はこのアプローチが好きではなく (開発ホストごとではなく、チェックアウト設定ごとに必要です!!) 、例として VCS (SVN/GIT/HG) でsrc/text/resources/auth.properties.exampleを提供したいと考えています。開発者ごとに (またはプロジェクト チェックアウトごとに) 所有する src/text/resources/auth.propertiesの存在を Maven でチェックするコードを作成したいが、統合テストフェーズが呼び出された場合 (または統合後のその他のフェーズ) のみテスト段階)。前のフェーズ ( compiletestなど) を実行した場合、このチェックを無効にする必要があります。

ビルドの一貫性をチェックするように設計されたMaven検証フェーズ (ライフサイクルの紹介を参照)。しかし、フェーズのチェックはありません!! そのため、統合前テスト段階を使用します。

私は作業コードを書きます:

<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.mycompany.app</groupId>
  <artifactId>マイアプリ</artifactId>
  <packaging>ジャー</packaging>
  <バージョン>1.0</バージョン>
  <name>マイアプリ</name>

  <プロファイル>

    <プロフィール>
      <id>existent.properties</id>
      <活性化>
        <ファイル>
          <missing>auth.properties</missing>
        </ファイル>
      </アクティベーション>
      <ビルド>
        <プラグイン>
          <プラグイン>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <バージョン>1.6</バージョン>
            <実行>
              <実行>
                <phase>事前統合テスト</phase>
                <目標>
                  <ゴール>走る</ゴール>
                </目標>
                <構成>
                  <対象>
                    <echo>統合テキストのライフサイクルを実行するには:</echo>
                    <echo> 1) 「auth.properties.example」の名前を「auth.properties」に変更します。</echo>
                    <echo> 2) 'auth.properties' に独自の認証データを入力します。</echo>
                    <fail message="'auth.properties' が見つかりません。"/>
                  </ターゲット>
                </設定>
              </実行>
            </実行>
          </プラグイン>
        </プラグイン>
      </ビルド>
    </プロフィール>

  </プロファイル>

  <ビルド>

    <プラグイン>

      <プラグイン>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <バージョン>1.6</バージョン>
        <実行>

          <実行>
            <id>テスト</id>
            <フェーズ>テスト</フェーズ>
            <目標>
              <ゴール>走る</ゴール>
            </目標>
            <構成>
              <対象>
                <echo>JUnit テスト!</echo>
              </ターゲット>
            </設定>
          </実行>

          <実行>
            <id>統合テスト</id>
            <phase>統合テスト</phase>
            <目標>
              <ゴール>走る</ゴール>
            </目標>
            <構成>
              <対象>
                <echo>セレンテスト!</echo>
              </ターゲット>
            </設定>
          </実行>

        </実行>
      </プラグイン>

    </プラグイン>

  </ビルド>

</プロジェクト>

しかし、GNU Make の第一人者として、私は上記のコードが嫌いです。私は正しいですか?Mavenの間違った使い方ですか?

4

1 に答える 1

4

あなたのアプローチは問題ありません(私見が少し過剰に設計されている場合-そのようなことをREADME /プロジェクトwikiに入れるだけです。ファイルを読み取ろうとすると、ファイルがないとビルドは失敗するはずです)

antrun の代わりに Enforcer ゴールを使用することもできます: http://maven.apache.org/enforcer/enforcer-rules/requireFilesExist.html

于 2012-12-20T16:04:51.623 に答える