我有一个带有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
我不明白为什么
mySysProp
值对我的Java程序不可用。有人可以帮我吗?或者,向我展示实现此目标的更好方法。
谢谢,
神经网络
最佳答案
引号已关闭(这不是可以/需要将引号括在引号中的shell环境),并且使用具有相同名称的额外属性覆盖mySysProp
令人恐惧/困惑。尝试:
applicationDefaultJvmArgs = ["-DmySysProp=$mySysProp"]
PS:我建议使用
def foo = "bar"
而不是ext.foo = "bar"
,除非需要从外部范围和/或其他构建脚本(请参阅局部变量与全局变量)访问该属性。