統合テストライフサイクルを呼び出す場合、アプリケーションのテスト中にプロパティファイルからの認証データが開発者によって提供されているかどうかを 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の間違った使い方ですか?