java - 为什么 gradle 应用程序插件无法设置 JVM 参数

标签 java gradle jvm-arguments

我有一个带有 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/

相关文章:

java - Spring:如何在RESTful服务中为@RequestBody添加XSS保护?

android - Jenkins :来自 Gradle 2.2.2.pom com.android.tools.build:gradle:2.2.2

android - 为什么intellij必须为我制作的每个android项目安装不同的gradle版本

java - 如何在 VS Code 中为 Spring Boot 项目添加 JVM 参数?

java - 以编程方式设置 -X : and -XX: System Properties in JVM

java - Yourkit Java 探查器 : Cannot launch: it's impossible to automatically detect whether a 32-bit or a 64-bit JVM will be used

java - @Service 和 @Scope ("prototype") 一起

java - picasso 加载图像后将图像保存在SD卡中

gradle - gradle错误文件名,目录名称或卷标签语法不正确

scala - 用于检查正在使用哪些内存选项的 SBT 命令