2012-03-24 7 views
101

いくつかのタスクでは、ホームフォルダ内のjarファイルを参照しています。Gradleでは、環境変数を取得するより良い方法はありますか?

ENV = System.getenv() 
HOME = ENV['HOME'] 

task copyToServer(dependsOn: 'jar', type: Copy) { 

from 'build/libs/' 
into HOME + "/something/plugins/" 
} 

よりも環境変数を取得するためのより良い方法はありこれは、$ HOMEが設定されますが、私はドキュメントから、いくつかの魔法を逃したことを期待していました。

+1

は、環境変数の前にできることに注意してくださいGradleによって見られ、使用されると、輸出される必要があります。 '$ export FOO = bar'です。 – luka5z

+0

私はここで紛失しているものがあります... 'def HOME'を入れなければなりません:Gradle 4.4.1' Project'は 'HOME'プロパティまたは' ENV'プロパティを持っていません。脱落したものかもしれない...? –

答えて

170

まあ;これも同様に動作します:

home = "$System.env.HOME" 

あなたが目指すものは明確ではありません。

+14

またはあなたの用法: "$ {System.env.HOME}/something/plugins"へ – JoeG

+7

環境変数FOOが次のように定義されていない場合、 "$ System.env.FOO"は "null"システム環境変数。コンソールに値 "null"の文字列を記録すると、null変数と同じ出力が出力されるため、混乱する可能性があります。 –

+1

またはhome = System.env.HOME? –

67

私は、フォームがGradleの1.11に動作するように@thoredgeによって示唆され得ることができませんでしたが、これは私の作品:

home = System.getenv('HOME') 

それは純粋なJavaで動作するものがで動作することを心に留めておくのに役立ちますGradleも。アンドロイドのGradleで

+0

なぜか分かりませんが、私のために働く 'System.getenv( 'HOME')'バージョンしか得られませんでした。他のバージョンは 'null 'を返し続けた – Kip

+0

それは他人の編集だった。私はそれを元に戻します。 –

+0

誤って二重引用符ではなく一重引用符を使用しましたか? –

6

はあなただけで行うことができます0.4.0:

println System.env.HOME 

クラスパスcom.android.tools.build:gradle-experimental:0.4.0

+0

thoredgeはあなたの答えの4年前にそれを言った! –

関連する問題