Grails 2.4重新加载和调试不能同时工作

时间:2014-12-01 12:47:08

标签: grails intellij-idea

我正在尝试使用以下方法调试我的spock测试,该方法曾经在Grails 2.3中使用,但在2.4.4中不再适用:

  1. 使用以下命令在终端中启动grails:grails-debug -reloading -Dvar = blah
  2. 在Intellij中启动远程调试器
  3. 高兴,因为我可以从grails控制台运行测试,调试它们,修改服务并让它们自动重新加载。
  4. 自grails 2.4以来,grails-debug脚本消失了,取而代之的是grails -debug。但是我发现-debug只有在它是第一个参数时才有效,然后它会忽略-reloading参数。虽然重新加载了对测试本身的更改,但测试使用的服务更改却没有。 所以我可以调试而无需重新加载。如果-reloading是第一个参数,那么重新加载服务有效,但我无法再调试。 所有上述内容都使用非分叉执行。

    分叉执行的一个额外复杂因素是我需要将-Dvar = blah传递给我的应用程序,并且似乎没有一种机制可以使用forked exec执行此操作。所以我通过完全注释BuildConfig.groovy中的部分来禁用forked exec:

    grails.reload.enabled = true
    //forkConfig = [maxMemory: 1024, minMemory: 64, debug: true, maxPerm: 256]
    //grails.project.fork = [
    //        test: forkConfig, // configure settings for the test-app JVM
    //        run: forkConfig, // configure settings for the run-app JVM
    //        war: forkConfig, // configure settings for the run-war JVM
    //        console: forkConfig // configure settings for the Swing console JVM
    //]
    

    并尝试过:

    grails.reload.enabled = true
    forkConfig = [maxMemory: 1024, minMemory: 64, debug: true, maxPerm: 256]
    grails.project.fork = [
            test: false, // configure settings for the test-app JVM
            run: false, // configure settings for the run-app JVM
            war: false, // configure settings for the run-war JVM
            console: false // configure settings for the Swing console JVM
    ]
    

    在这两种情况下,我都可以同时调试测试并让它们重新加载服务。

    我的问题是:使用Grails 2.4.4和Intellij ultimate 13.1.5如何同时完成以下所有操作:

    1. 从grails交互式控制台运行各个spock集成测试(我不想为每个测试重新启动整个grails环境)
    2. 在命令行上将系统属性传递给grails
    3. 在Intellij中调试这些测试
    4. 更改服务并自动重新加载
    5. (我很乐意使用forked exec,如果解决了这个问题,那么需要一种机制将属性传递给分叉的调试会话)

0 个答案:

没有答案