Intellij IDEA调试器无法处理Gradle Vert.X项目

Yur*_*kov 5 java debugging intellij-idea gradle vert.x

我正在Vert.X使用Gradle构建工具使用框架开发项目.IntelliJ我遇到的问题是断点在我尝试的任何方式都不起作用.

这是Vert.X我在Gradle中使用的运行配置:

run {
    args = [
            'run', mainVerticleName,
            "-conf", confPath,
            "--redeploy=$project.ext.watchForChange",
            "--launcher-class=$mainClassName",
            "--on-redeploy=$project.ext.doOnChange"
    ]
}
Run Code Online (Sandbox Code Playgroud)

因此,部署完成后使用Gradle,运行没有任何问题,IntelliJ调试器已连接,但断点不起作用.

我试图让它运作的方式:

1)Gradle运行配置.这是一个运行配置Intellij IDEA: Intellij使用Gradle运行配置

尝试使用远程调试工具,使用以下VM选项启动应用程序:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000

但这没效果.

2)应用程序配置: IntelliJ使用Application运行配置

在这种情况下,我无法启动项目,因为我在启动时收到以下消息:

Error: Could not find or load main class io.vertx.core.Launcher

Vert.X Core 库是在类路径和配置似乎是正确的,所以不能得到的是问题.

项目的源代码是公开的,可以在以下位置找到GitHub:

vertx-gradle这个架构起动

Vert.X版本 - 3.4.0.Gradle版本 - 3.4.1.IntelliJ IDEA版本 - 2016.3.5.操作系统 - MacOS Sierra 10.12.3.

有趣的是,当我Vert.X从测试部署时- 断点起作用.在我上面描述的情况下,为什么断点不起作用的任何想法?

Yur*_*kov 5

以下是这两个问题的解决方案.感谢@CrazyCoder提供的帮助.

1)run命令在单独的VM中运行.所以,为了使它工作,我--java-opts在脚本中添加了参数:

run {
    args = [
            'run', mainVerticleName,
            "-conf", confPath,
            "--redeploy=$project.ext.watchForChange",
            "--launcher-class=$mainClassName",
            "--on-redeploy=$project.ext.doOnChange",
            // used for attaching remote debugger
            "--java-opts", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000"
    ]
}
Run Code Online (Sandbox Code Playgroud)

这允许Remote debug在端口上附加配置8000.

2)默认情况下,Intellij IDEA每个源集创建单独的模块,因此我有源集api_mainapi_test模块.关闭此功能后 - 应用程序调试运行开始起作用.

可以在Gradle设置中关闭此功能.Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle:取消选中每个源集创建单独的模块.

在此输入图像描述

这是一个IntelliJ IDEA问题 - 参考.