統合テストライフサイクルを呼び出す場合、アプリケーションのテスト中にプロパティファイルからの認証データが開発者によって提供されているかどうかを Maven で確認したいと思います。
状態の一般的な慣行として、認証データをソース ツリーにコミットするのは良くありません。ユーザー名やパスワードなどの設定で説明されている標準の Maven アプローチは、 pom.xml と一緒に配布しないでください。
しかし、私はこのアプローチが好きではなく (開発ホストごとではなく、チェックアウト設定ごとに必要です!!) 、例として VCS (SVN/GIT/HG) でsrc/text/resources/auth.properties.exampleを提供したいと考えています。開発者ごとに (またはプロジェクト チェックアウトごとに) 所有する src/text/resources/auth.propertiesの存在を Maven でチェックするコードを作成したいが、統合テストフェーズが呼び出された場合 (または統合後のその他のフェーズ) のみテスト段階)。前のフェーズ ( compileやtestなど) を実行した場合、このチェックを無効にする必要があります。
ビルドの一貫性をチェックするように設計された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の間違った使い方ですか?