【问题标题】:Grails: Pass options to the forked JVMGrails:将选项传递给分叉的 JVM
【发布时间】:2014-02-23 09:01:38
【问题描述】:

我正在使用 Grails 2.3.5,我需要将一个选项传递给分叉的 JVM。我已经尝试通过设置 JAVA_OPTS 环境变量来做到这一点,但这只是被分叉的 JVM 忽略了。我如何才能将分叉的 JVM 传递给一个选项?

我发现了这个:http://jira.grails.org/browse/MAVEN-177?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel 但那是如果你使用的是我相信的 Maven 插件。我正在寻找等价物,但不必涉及 Maven 插件。

【问题讨论】:

    标签: grails jvm fork options


    【解决方案1】:

    根据:http://grails.org/doc/2.3.x/guide/commandLine.html#forkedMode(靠近该部分的底部),您可以在 grails.project.fork 配置中使用 jvmArgs。在 BuildConfig 中:

    grails.project.fork = [
        // ...
        run: [maxMemory:1024, minMemory:64, debug:false, maxPerm:256, jvmArgs: '..arbitrary JVM arguments..']
        // ...
    ]
    

    【讨论】:

    • 谢谢。完美运行。
    • FWIW,我尝试了这个解决方案(以及其他一些涉及 --debug-fork 并直接将 JVM 参数传递到 grails 的解决方案),但除了 g'old JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 之外没有任何效果(当然,我被困在一个旧版本的 grails:2.0.3。)
    【解决方案2】:

    无法发表评论。为了澄清 Andrew 的回答,jvmArgs 必须是一个列表。

    grails.project.fork = [
        // ...
        run: [maxMemory:1024, minMemory:64, debug:false, maxPerm:256, jvmArgs: ['-Dsome.prop=true', ...] ]
        // ...
    ]
    

    【讨论】:

      【解决方案3】:

      在使用 Tomcat 7.0.55.3 插件运行的分叉模式下使用 Grails 2.5.1,我无法让任何 grails.project.fork.jvmArgs 解决方案工作。 我最终能够通过在我的 BuildGroovy.config 末尾添加它来将 JVM 选项传递给分叉进程:

      grails.tomcat.jvmArgs = ['-jvm_option_here']

      见:TomcatServerFactory.groovy

      【讨论】: