我有一个带有main()
方法的Java程序,它需要一个系统属性-Dmy_sys_prop=SOME_VALUE
。我使用application
插件来执行我的程序。我的build.gradle
中的配置如下:
apply plugin: "java"
apply plugin: "maven"
apply plugin: "application"
sourceCompatibility = 1.6
targetCompatibility = 1.6
ext.mySysProp = '"-Dmy_sys_prop=' + mySysProp + '"'
applicationDefaultJvmArgs = [mySysProp]
mainClassName = "com.demo.SampleApp"
task wrapper(type: Wrapper) {
gradleVersion = '2.0'
}
我正在使用以下命令来运行该程序。
./gradlew clean build run -PmySysProp=SOME_VALUE
我无法理解为什么我的Java程序无法使用mySysProp
值。
有人可以帮助我吗?或者,告诉我一个更好的方法来实现这一目标。
谢谢, NN
答案 0 :(得分:4)
引号关闭(这不是一个shell环境,其中参数可以/需要用引号括起来),并且使用同名的额外属性覆盖mySysProp
是可怕的/混乱的。尝试:
applicationDefaultJvmArgs = ["-DmySysProp=$mySysProp"]
PS:我建议使用def foo = "bar"
而不是ext.foo = "bar"
,除非需要从外部作用域和/或其他构建脚本访问该属性(参见本地与全局变量)。