2017-11-03 7 views
0

Mavenをビルドツールとして使用するSeleniumプロジェクトがあり、.propertiesファイルからさまざまな環境の詳細(プロトコル、ドメイン、サブドメインなど)を読みたいと思っています。 mvnコマンドをトリガするときに指定しているプロファイルに基づいて、dev、staging、prodなどの異なる環境でテストを実行するには、Mavenプロファイルを使用することは可能でしょうか?Mavenプロファイルはプロパティファイルからデータを読み込みます

dev.properties:

protocol=http 
domain=domain.com 
subdomain=www 

のpom.xml:データは、その後

System.getProperty("protocol"); 
System.getProperty("domain"); 
System.getProperty("subdomain"); 
を使用してJavaコードで取得されなければならない

mvn clean test -Pdev 

<profiles> 
    <profile> 
     <id>prod</id> 
     <activation> 
     <activeByDefault>true</activeByDefault> 
     </activation> 
    </profile> 
    <profile> 
     <id>pre_prod</id> 
    </profile> 
    <profile> 
     <id>dev</id> 
    </profile> 
    </profiles> 

MVN

ご協力いただければ幸いです。

ありがとうございます!

答えて

1

あなただけのコマンドライン引数に基づいて異なるプロパティファイルを読みたい場合は、あなただけの、たとえば、文字列を渡すことができませんでした-Denv = DEV

は、次にあなたの特性のリーダークラスでは、プロパティファイルを初期化していますSystem.getProperty( "env")に基づいています。

<properties> 
    <property> 
    <protocol></protocol> 
    <domain></domain> 
    <subdomain></subdomain> 
    <property> 
<properties> 

をし、これらは-Dprotocol = FOOなどのようにコマンドラインから渡すことができ

-

Properties generalProperties = new Properties(); 
    String generalPropertiesFileName = "data/"+ 
     System.getProperty("env") + ".properties"; 
    initProperties(generalProperties, generalPropertiesFileName); 

代わりに、あなたも同じように、あなたのPOMにコマンドラインからプロパティを渡すことができます

希望しますか?

+0

こんにちは@JackForman、これについての回答をお寄せいただきありがとうございます。環境を処理するためにpom.xmlファイル内に直接を定義することは、少なくとも10個のWebサイト、つまり独自の開発者、ステージング、プロード設定を持つテストに対処する必要があるため、私の問題にとっては適切な解決策ではありません。このようにして、pomファイルには多くのデータが追加されるので、かなり乱雑になります。最後に、私の最終的な仕事は 'mvn clean test -Dbrand = ebay -Pdev'のようになります。ここで、" brand "はテスト対象のウェブサイトの1つになります。 –

+0

さて、あなたのコマンドライン引数を取っているpropsファイルを使った最初の解決策は、それを扱うかもしれませんか?しかし、おそらくあなたが知っていないプロファイルで行うことができる賢明な何かがあります – JackForman

+0

ちょうどあなたが提案した最初のソリューションの実装を完了、素晴らしい!もう一度ありがとう! –

関連する問題