Gradle'da, Ortam Değişkenleri almanın daha iyi bir yolu var mı?


151

Birkaç Görevde, ana klasörümdeki kavanozlara başvuruyorum.

Ortam Değişkenleri almanın daha iyi bir yolu var mı

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

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

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

Bu $ HOME ayarlar ama ben belgelerden biraz sihir özledim umuyordum.


1
Ortam değişkeninin Gradle tarafından görülüp kullanılabilmesi için önce dışa aktarılması gerektiğini unutmayın. $ export FOO=bar.
luka5z

Burada eksik olduğum bir şey var ... def HOMEKoymam lazım : Gradle 4.4.1'in Projectbir HOMEözelliği veya ENVmülkü yok. Bırakılan bir şey olabilir mi ...?
mike kemirgen

Yanıtlar:


243

İyi; bu da işe yarıyor:

home = "$System.env.HOME"

Ne amaçladığınız belli değil.


17
veya kullanımınıza: "$ {System.env.HOME} / bir şey / eklentiler" içine
JoeG

8
FOO ortam değişkeni bir sistem ortam değişkeni olarak tanımlanmamışsa, "$ System.env.FOO" öğesinin "null" değerine sahip String döndürdüğünü unutmayın. Konsola "null" değerine sahip bir Dize günlüğünün null değişkeniyle aynı çıktıyı yazdıracağı için kafa karıştırıcı olabilir.
Gökhan Barış Aker

4
veya sadece ev = System.env.HOME?
Alice Purcell

14
Ayarlanmamış bir ortam değişkeni elde etmeye çalışıyorsanız, System.getenv('VAR')atanmamışsa null değerini döndürmek daha iyi olur . Eğer kullanırsanız "$System.env.VAR", dizeyi döndürür "null".
chrish

Burada özlediğim bir şey var ... def homeKoymam gerekiyor: Gradle 4.4.1'in Projectbir homeözelliği yok. Bırakılan bir şey olabilir mi ...?
mike kemirgen

100

@Thoredge tarafından Gradle 1.11'de çalışmak için önerilen formu alamadım, ancak bu benim için çalışıyor:

home = System.getenv('HOME')

Saf Java'da çalışan her şeyin Gradle'da da çalışacağını akılda tutmaya yardımcı olur.


Neden olduğundan emin değilim ama sadece System.getenv('HOME')benim için çalışacak sürümü alabilirim . Diğer versiyon dönmeye devam ettinull
Kip

1
Belki de yanlışlıkla çift tırnak yerine tek tırnak kullandınız mı?
Alice Purcell

7
bu cevaptan daha iyidir: stackoverflow.com/a/9856769/689223 , çünkü mevcut değilse nullyerine geri döner "null".
Ricardo Freitas

12

Android gradle 0.4.0'da şunları yapabilirsiniz:

println System.env.HOME

classpath com.android.tools.build:gradle-experimental:0.4.0


11
thoredge dedi ki cevap 4 yıl önce!
mike kemirgen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.