Gradle에서 환경 변수를 얻는 더 좋은 방법이 있습니까?


151

여러 작업에서 홈 폴더의 jar을 참조합니다.

환경 변수를 얻는 더 좋은 방법이 있습니까?

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

여기에 누락 된 것이 있습니다 ... 넣어야합니다 def HOME: Gradle 4.4.1 Project에는 HOME속성이나 속성 이 없습니다 ENV. 떨어 뜨린 것일 수도 있습니다 ...?
마이크 설치류

답변:


243

잘; 이것은 또한 작동합니다 :

home = "$System.env.HOME"

무엇을 목표로 삼고 있는지 명확하지 않습니다.


17
또는 사용법 : "$ {System.env.HOME} / something / plugins"
JoeG

8
환경 변수 FOO가 시스템 환경 변수로 정의되지 않은 경우 "$ System.env.FOO"는 값이 "null"인 문자열을 리턴합니다. 값이 "null"인 문자열을 콘솔에 로깅하면 널 변수와 동일한 출력이 인쇄되므로 혼동 될 수 있습니다.
Gökhan Barış Aker

4
또는 그냥 홈 = System.env.HOME?
Alice Purcell

14
설정되지 않은 환경 변수를 얻으려는 System.getenv('VAR')경우 할당되지 않은 경우 null을 반환하는 것이 좋습니다 . 사용 "$System.env.VAR"하면 문자열을 반환합니다 "null".
chrish

여기에 빠진 것이 있습니다 ... def homeGradle 4.4.1 Project에는 home속성 이 없습니다 . 떨어 뜨린 것일 수도 있습니다 ...?
마이크 설치류

100

Gradle 1.11에서 @thoredge가 제안한 양식을 얻을 수 없었지만 이것은 저에게 효과적입니다.

home = System.getenv('HOME')

순수한 Java에서 작동하는 것은 Gradle에서도 작동한다는 것을 명심하십시오.


왜 그런지 잘 모르겠지만 나에게 맞는 System.getenv('HOME')버전 만 얻을 수 있었다 . 다른 버전은 계속 돌아 왔습니다null
Kip

1
실수로 큰 따옴표 대신 작은 따옴표를 사용 했습니까?
Alice Purcell

7
이것은 답변보다 낫습니다 : stackoverflow.com/a/9856769/689223 . 존재하지 않는 경우 null대신 대신 반환하기 때문 "null"입니다.
Ricardo Freitas

12

안드로이드 gradle 0.4.0에서는 다음을 수행 할 수 있습니다.

println System.env.HOME

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


11
thoredge는 대답하기 4 년 전에 말했다!
마이크 설치류
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.