2016-06-29 5 views
3

私はJavaでいくつかの経験があり、私はgradleを初めて使っており、私はgradleファイルを修正する必要があるプロジェクトに参加しました。ここでJavaコードでgradleパラメータにアクセスする方法

は、私は、私は、この値に基づいてenvironment というパラメータを渡したい ./build test

MACターミナルから次のコマンドを使用して、私のテストスイートを実行し、私のbuild.gradleファイル

apply plugin: 'java' 
apply plugin: 'idea' 

sourceCompatibility = 1.5 
version = '1.0' 
dependencies { 
    testCompile 'org.testng:testng:6.9.10', 
       'org.seleniumhq.selenium:selenium-java:2.53.0' 
} 

test { 
    useTestNG() 
    testLogging.showStandardStreams = true 
} 

ですこのパラメータは、私は自分のURLを設定し、その環境のテストを実行する必要があります。 ./build test environment=devまたは./build test environment=qa

そして、私のJavaコードのようなものは、私が

if(env == 'dev') { 
    url = "my dev url"; 
    user = "my dev user name" 
} else if(env == 'qa') { 
    url = "my qa url"; 
    user = "my qa user name" 
} 

がどのように私は、端末では、このパラメータを渡すことができ、このような何かをしますか? 私のコードでこのパラメータを使用する方法の小さなスニペットは大きな助けになるでしょう(私のJavaコードはmainメソッドを持っていません)。

注:私は既にプロパティファイルを使用してこの動作を達成しましたが、私のチームは環境を設定するコードを変更したくありません。だから私はそれらの変更を破棄しなければならなかった。

答えて

10

コマンドラインからグラデーションまで、システムプロパティまたはプロジェクトプロパティを使用できます。これは、どちらかになります:

./gradlew test -Denv=dev 

または

./gradle test -Penv=dev 

上記の特性は今build.gradleで読み取ることができ、あなたが同様のテストにそれらを渡す必要があり、それはので、システムのプロパティで実行する必要があります。コマンドラインからシステムプロパティの

test { 
    systemProperty 'env', System.properties['env'] ?: 'dev' 
} 

または:

test { 
    systemProperty 'env', project.hasProperty('env') ? project.env : 'dev' 
} 
テストクラスで

だけ使用します。

System.getProperty("env") 

はあなたが必要な値を取得します。

+1

簡単な説明をしてくれてありがとう! –

+0

@ God_Father、よろしくお願いします。 – Opal

関連する問題