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

时间:2013-10-22 16:46:09

标签: 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:39 AM 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:40 AM ttys000 1:50.24 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -Xmx1024M -Xms1024M -XX:MaxPermSize = 256m -Dgrails.fork .active = 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

1 个答案:

答案 0 :(得分: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]]
}