2013-04-19 3 views
2

Это должен быть самый простой вопрос, но у меня возникла проблема с доступом к системной переменной из задачи теста Gradle. Должна быть опечатка в what I am doing, так как я убежден, что этот синтаксис верен, но он не работает. Я надеюсь, кто-то может помочь мне определить проблему с этим фрагментом кода ниже?Использование свойств системы в скрипте построения Gradle

// my gradle build says the following line is a deprecated method  
//systemProperties = System.getProperties() 

// this line always returns 1 on a multiprocessor system 
println 'NUMBER_OF_PROCESSORS is ' + 
    System.getProperty("NUMBER_OF_PROCESSORS", "1") 

// this line also always returns the default for TMP var 
println 'TMP is ' + System.getProperty("TMP", "C:\\Temp") 

Примечание: Я также спросил the question here, но так как его закрытой теме я не уверен, если я получу ответ там. Кроме того, у меня есть read the doc полностью, но это не помогло.

Я попробовал это, и они также не:

test { 
    println "" 
    ENV = System.getProperties() 
    println "TMP is " + ENV['TMP'] 
    println "" 
} 

task testa(Type:Test) { 
    println "" 
    println "HOMEPATH = " + System.getProperty("HOMEPATH", "defaultpath") 
    println "TMP = " + System.getProperty("TMP", "defaulttmp") 
    println "" 
} 

task testb(Type:Test) { 
    println "" 
    println "HOMEPATH = " + System.properties['HOMEPATH'] 
    println "TMP = " + System.properties['TMP'] 
    println "" 
} 

task testc(Type:Test) { 
    // pass a arg to this test like -PMYARG=anything 
    println "" 
    println "Parg = " + System.properties['MYARG'] 
    println "" 
} 

testWorks { 
    println "" 
    ENV['ok'] = "good to go" 
    println "this test is " + ENV['ok'] 
    println "" 
} 
+0

Вы пытаетесь получить доступ к переменным окружения или пытаетесь получить доступ Свойства системы jvm? – erdi

+0

@erdi - свойства системы jvm – djangofan

+0

, то Питер, кажется, указывает вам в правильном направлении – erdi

ответ

8

Для того, чтобы свойства системы в Gradle JVM, имеющихся в наличии для испытаний, вы можете сделать:

test { 
    systemProperties = System.properties 
} 

Или, если вы объявили дополнительные Test задачи :

tasks.withType(Test) { 
    systemProperties = System.properties 
} 
+0

Я добавил «testd» к моему проекту (ссылка на мой вопрос выше), но после добавления этого теста, используя ваше предложение, оно не показалось Работа. Я получил эту ошибку, о которой я уже упоминал в своем вопросе: «Устаревшее динамическое свойство:« systemProperties »в« task »: testd '", value: "{java.vendor = Oracle Co ...". Чтобы воспроизвести эту ошибку, вы можете загрузить мой проект из GitHub. – djangofan

+0

Это 'type: Test', а не' Type: Test'. –

+0

Хорошо, я изменил свой проект на GitHub и использовал ваш совет и до сих пор не могу заставить его работать. вы предлагаете выше, я вижу здесь исключение: https://gist.github.com/djangofan/5430278. Если я прокомментирую, что одна строка работает, значит, я все еще не могу заставить его работать. Это не так сложно. С Maven у меня нет такой проблемы. – djangofan

Смежные вопросы