5

在 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: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

4

1 回答 1

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]]
}
于 2013-12-07T19:25:18.550 回答