如何使用gradle设置系统属性?

如何使用gradle设置系统属性?,gradle,Gradle,我想知道是否可以使用Gradle为Java应用程序设置系统属性 我尝试使用gradle.properties文件并将属性定义为 systemProp.name = my name 但是当我尝试使用 System.getProperty("name") 找不到该属性 build.gradle和gradle.properties位于项目的根文件夹中 这就是我的build.gradle的样子: apply plugin: 'war' apply plugin: 'appengine' build

我想知道是否可以使用Gradle为Java应用程序设置系统属性

我尝试使用gradle.properties文件并将属性定义为

systemProp.name = my name
但是当我尝试使用

System.getProperty("name")
找不到该属性

build.gradle和gradle.properties位于项目的根文件夹中

这就是我的build.gradle的样子:

apply plugin: 'war'
apply plugin: 'appengine'

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.google.appengine:gradle-appengine-plugin:1.8.6'
    }
}

appengine {
    httpPort = 8081
}

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'com.google.inject', name: 'guice', version: '3.0'
    compile group: 'com.google.inject.extensions', name: 'guice-servlet', version: '3.0'
    compile group: 'javax.servlet', name: 'servlet-api', version: '2.5'
    compile group: 'org.hibernate', name: 'hibernate-entitymanager', version: '4.2.0.Final'
    compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.27'
    compile 'com.google.protobuf:protobuf-java:2.5.0'
    compile 'com.google.appengine:appengine-api-1.0-sdk:1.8.6'
    compile 'com.google.template:soy:2012-12-21'
    compile 'org.json:json:20090211'
}
这就是我的build.properties的外观:

systemProp.firstName=Marko
systemProp.lastName=Vuksanovic
这是AppEngine应用程序的一部分,我使用以下命令运行它:

gradle appengineRun

gradle.properties
中设置的系统属性仅在运行gradle的JVM中可用

从文件:

appengineRun:启动运行项目的本地开发服务器 代码

JVM标志:传递到本地开发服务器的JVM标志

如果您需要您的系统属性在appengine中可用(appengine是独立的JVM),那么您应该使用
jvmFlags
property

明确地:

appengine {
    jvmFlags = ['-DfirstName=Marko', '-DlastName=Vuksanovic']
}
使用gradle.properties:

appengine {
    jvmFlags = ['-DfirstName=$firstName', '-DlastName=$lastName']
}

我只是偶然发现了这个用于gradle应用程序插件。添加到运行任务。非常有用:

run {   
    systemProperties['MYPROP'] = '/my/prop/value'
}

我就是这样做的,为测试框架设置道具:

test {
    systemProperty "browser", "chrome"
    systemProperty "webdriver.chrome.driver", "$projectDir/drivers/chromedriver"
}

这就是我的工作原理(使用Kotlin DSL):

tasks.withType{
systemProperty(“键”、“值”)
}

运行Java应用程序的构建代码是什么样子的?请发布您的
build.gradle
。这对我不起作用,获取
>无法找到参数[build\u 3qqbgis9k2n97muogsnwks4i$\u run]的方法run()_closure5@3172da27]
@birgersp答案提到了
gradle应用程序插件
。只需将此插件添加到您的
build.gradle
tasks.withType<JavaExec> {
        systemProperty("key", "value")
}