在 Grails 2.3.1 中执行“run-app”时如何将 Java 系统属性传递给 JVM

Hug*_*ien 5 grails jvm-arguments grails-2.3

在 Grails 2.3.1 中执行“run-app”时如何将 Java 系统属性传递给 JVM?运行“grailsw run-app”时,会启动两个 JVM。Grails 控制台和运行我的 Grails 应用程序的 tomcat 容器。我曾尝试将它们附加在 Grails 目标命令之间和前面。我有一种感觉,我需要修改一个脚本。

501 640 622 0 9:39AM ttys000 1:20.20 /Library/Java/Home/bin/java -server -Xmx768M -Xms64M -XX:PermSize=32m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8 ... --conf /Users/hbrien/Software/grails-2.3.1/conf/groovy-starter.conf --classpath run-app

501 661 640 0 9:40AM ttys000 1:50.24 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -Xmx1024M -Xms1024M -XX:MaxPermSizeDgrails=25 true -Dgrails.build.execution.context=/private/var/folder -Djdk.reflect.allowGetCallerClass=true -Dspringloaded=profile=grails;cacheDir=/Users/hbrien/.grails/2.3.1 org.grails.plugins。 tomcat.fork.ForkedTomcatServer

msc*_*yna 1

我在 Eclipse/GGTS 中调试时发现了类似的问题。在 BuildConfig 中没有任何配置的情况下运行项目grails.project.fork不会分叉,但调试总是分叉 Tomcat

我认为这是这个问题的副作用:http://jira.grails.org/browse/GRAILS-9836

奇怪的是,这个问题被标记为未解决,但拉取请求已合并并且在实际代码库中。我想将一些属性传递给分叉的 Tomcat 进程,最终得到了以下丑陋的代码BuildConfig.groovy

if (!System.getProperty('grails.fork.active')) {

    def forkedJvmArgs = System.getProperties()
        .findAll { it.key.startsWith('PARAM') }
            .collect { new String("-D${it.key}=${it.value}") }

    println "Passing properties to forked process: $forkedJvmArgs"

    grails.project.fork = [run: [jvmArgs: forkedJvmArgs]]
}
Run Code Online (Sandbox Code Playgroud)