2016-03-31 68 views
16

私はGradleビルドから環境変数を設定しようとしています。私はMacOS X(エル・キャピタン)です。 コマンドは "gradle test"です。Gradleビルドから環境変数を設定する

私は私のbuild.gradleでこれをしようとしている:

task setenv(type: Exec) { 
    commandLine "export", "SOME_TEST_VAR=aaa" 
} 
test.dependsOn setenv 

とビルドが失敗します。

実行は、タスクに失敗しました ':MyProjectとします。setenv'。

問題は、プロセスのCOMMAND '輸出' '

を開始起こった私も、これを試してみました:

test.doFirst { 
    ProcessBuilder pb1 = new ProcessBuilder("export SOME_TEST_VAR=some test value") 
    pb1.start(); 
} 

ビルドが成功しました。私はそれが失敗した私のJUnitテストでの環境変数をチェックしかし、もし:

assertTrue(System.getenv().containsKey("SOME_TEST_VAR")); 

を(build.gradleファイル内)のGradleのビルドから環境変数を設定する方法はありますか?

更新:

私が単独でそれをテストしてみた:値が渡されたのですかと私のテストタスクはすべてを受け取り、それはsystemProperty、環境変数やJVMARGSこと。

ここでは、Gradle自体に何も問題はありません。

問題は、私が実際のプロジェクトで試しているときに発生します。それは依存性注入にSpringを使用します。私は間違っているかもしれませんが、Springフレームワークがこれらの値をどこかにパージするようです。

そのサブプロジェクトは現在フリーズしており、今私の推測を詳細に確認することはできません。テストタスクについては

+0

の設定環境変数のために私のために働いています実験: 'テスト{ systemProperty 'SOME_TEST_VAR'、 'AAA' 環境 'SOME_TEST_VAR'、 'AAA' }' とテスト中: 'boolean good = System.getenv()。containsKey(" SOME_TEST_VAR ")|| System.getProperties()。containsKey( "SOME_TEST_VAR"); assertTrue(good); ' – user3791111

+0

ヘルプを読んだ後でもここで改行を行うことはできません。申し訳ありません、私がそれらを作ることを意味するところを仮定してください。 – user3791111

+0

追加情報がある場合は、質問を編集する必要があります。 –

答えて

15

、あなたはこのようなenvironment property使用することができます。あなたもこの方法で環境変数があることのexecタスク

task dropDatabase(type: Exec) { 
    environment "VAR", "val" 
    commandLine "doit" 
} 

ノートでenvironment propertyを使用することができます

test { 
    environment "VAR", "val" 
} 

をタスク中にのみ設定します。

+3

"test"タスクでは、 "environment"、 "jvmArgs"、 "systemProperties"のようなものは無視されます。私は必死に理由を理解しようとしています。私は別のJVMでテストを実行することを知っています - 少なくとも "jvmArgs"は動作するはずですが、そうではありません。 – user3791111

+0

JVMをフォークするだけの場合は、[JavaExec](https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/JavaExec.html)クラスを使用することもできます。 – Stuporman

1

あなたは「環境」コマンドを使用しても、「プリペンド」環境変数の設定を行うことができます

run.doFirst { environment 'SPARK_LOCAL_IP', 'localhost' } 
2

をこの1つは別の失敗したテスト用プラグイン

test { 
    systemProperties = [ 
     'catalina.home': 'c:/test' 
    ] 
    println "Starting Tests" 
    beforeTest { descriptor -> 
     logger.lifecycle("Running test: " + descriptor)     
    }  
} 
関連する問題