我有一个带有 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"
除非该属性需要从外部范围访问和/或其他构建脚本(参见本地变量与全局变量)。
关于java - 为什么 gradle 应用程序插件无法设置 JVM 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25212858/