properties - 在 Gradle 构建脚本中使用系统属性

标签 properties gradle

这应该是最简单的问题,但我在从 Gradle 测试任务访问系统变量时遇到问题。 what I am doing中肯定有错别字因为我确信这种语法是正确的,但它不起作用。我希望有人可以帮助我找出下面这段代码片段的问题?

// 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 ""
}

最佳答案

要使 Gradle JVM 的系统属性可用于测试,您可以执行以下操作:

test {
    systemProperties = System.properties
}

或者,如果您已声明附加 Test任务:
tasks.withType(Test) {
    systemProperties = System.properties
}

关于properties - 在 Gradle 构建脚本中使用系统属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16110330/

相关文章:

plugins - 如何使用Gradle选择正确的配置文件?

spring - 在运行时从属性文件中读取值

android - gradle导入会突然失败吗?

maven - 如何将 Artifact 安装到本地gradle文件存储中

java - xml解析器配置文件

android - 当我合并分支时,Android Gradle 插件无法识别 SourceSet 'instrumentTest'

android - Android 2即时运行

C# 遍历类属性

c# - 为查看数组而创建的索引器看不到对数组所做的更改

java - Spring Boot 将 Java 注释上的配置属性/消息外部化