【问题标题】:Launched gradle with a test with the --no-daemon parameter but the daemon is launched anyway使用 --no-daemon 参数启动了 gradle,但守护程序仍然启动
【发布时间】:2015-01-19 14:46:07
【问题描述】:

我正在尝试调试我编写的一些单元测试,但 gradle 守护进程似乎总是启动,忽略了我设置的任何选项。

使用 Mac OS X 10.9.5、Java 1.7、Gradle 2.2.1 和 robolectric-gradle-plugin 0.14.1

使用以下命令启动 gradle:

GRADLE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5006"    
./gradlew test --no-daemon -Dorg.gradle.debug=true

导致出现以下行

To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: http://gradle.org/docs/2.2.1/userguid....

我还尝试在 build.gradle 中将 -Xdebug 和 Xrunjdwp 设置为 jvmArgs。

什么都没有发生,但是如果我添加 -d 并重新运行,事实证明守护程序已启动并正在端口 5005 上等待调试器:http://pastebin.com/TqaXubmr

最后,如果我随后启动一个附加到端口 5005 的调试器,则测试会运行,但没有一个断点被命中。

gradle.properties 为空,我没有设置 org.gradle.jvmargs。

【问题讨论】:

    标签: gradle android-gradle-plugin


    【解决方案1】:

    您可能在 gradle.properties 中配置了内存设置?这些可以强制 gradle 启动一个新的 jvm,因为这些设置不能动态应用。

    请记住,单元测试总是在单独的 jvm 中执行。调试 gradle 执行的测试的最简单方法是运行

    >gradle :test --debug-jvm
    

    这将自动将您的测试任务配置为在启用调试的情况下运行。

    【讨论】:

    • 我正在尝试将调试器附加到测试过程。 --debug 只是打开 gradle 的调试日志记录。
    • 对不起,我在这里混淆了一些东西。它是 --debug-jvm 而不是 --debug。更新了我的答案。很抱歉造成混淆。
    • 就我而言,“~/.gradle/gradle.properties”(注意主目录)中有“org.gradle.jvmargs=-Xmx2048M”。删除它会阻止 gradle 分叉 jvm。
    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多