我正在从Google Plugin for Eclipse切换到官方的 Google App Engine Maven Plugin。我希望,我无法弄清楚的最后一件事是如何设置良好的调试工作流程。当我使用 GPE 时,我只是设置了断点,调试器会自动停在那里,但是当我通过 运行开发服务器时mvn appengine:devserver
,我认为开发服务器和 eclipse 不知道彼此。
我如何让他们互相交谈?
我正在从Google Plugin for Eclipse切换到官方的 Google App Engine Maven Plugin。我希望,我无法弄清楚的最后一件事是如何设置良好的调试工作流程。当我使用 GPE 时,我只是设置了断点,调试器会自动停在那里,但是当我通过 运行开发服务器时mvn appengine:devserver
,我认为开发服务器和 eclipse 不知道彼此。
我如何让他们互相交谈?
第一个选项是将您的项目设置为使用 @ https://cloud.google.com/appengine/docs/java/webtoolsplatform中记录的 WTP 。这是我切换到的方法。
第二个选项是使用两个调试配置。
第一个调试配置将运行您的 Maven 目标,即appengine:devserver
.
第二个是Remote Java Application
配置,将调试客户端连接到 devserver jvm。
这也需要将一些 jvm 参数传递给 maven 目标。
<!-- GAE plugin -->
<plugin>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>1.7.5-SNAPSHOT</version>
<configuration>
<jvmFlags>
<jvmFlag>-Xdebug</jvmFlag>
<jvmFlag>-Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=y
</jvmFlag>
</jvmFlags>
<disableUpdateCheck>true</disableUpdateCheck>
</configuration>
</plugin>
一旦这 3 件事到位,运行 maven 调试配置,然后运行调试客户端配置,然后运行您的应用程序。
尚不支持热插拔,因此如果您更改任何非资源文件(任何 java 源),开发服务器将看不到它们。资源文件将被部署(静态文件:html、js)。
您应该在调试模式下从eclipse执行mvn。
在 Eclipse 中,您可以从 Eclipse 顶部工具栏“运行”->“调试配置”->“Maven 构建”配置此类 Maven 构建命令
一旦在 Maven 中以 Eclipse 调试模式启动,您应该能够命中断点。
编辑- 另一种选择是设置远程调试,即“运行”->“调试配置”->“远程 Java 应用程序”并监听远程调试端口,即您应该确保 appengine:devserver 使用远程调试端口参数启动 - 参考 -远程在eclipse中调试
这个问题可能会给你一个问题的提示。Maven appengine:devserver 在单独的进程中启动开发服务器。然而,Eclipse 只知道 Maven 进程本身(这是您在调试视图中看到的)。此外,由于无法使用调试端口等参数启动开发服务器,因此它可能永远无法连接到调试器。
链接的问题表明有一个非官方的 Maven GAE 插件需要参数。还有一张增强官方插件的新票,插件开发人员承诺很快实现此功能。
我会看看我还能做些什么来使 eclipse 集成更容易,但现在有更新到 appengine-maven-plugin 项目的问题:http ://code.google.com/p/appengine-maven -plugin/issues/detail?id=3&can=1所以看看是否支持 jvm 参数可以帮助你。
请让我知道你的经历,我总是支持很棒的事情。
我在 2015 年 9 月创建了一个 GAE (Java) 项目,以下内容适用于这个项目和类似项目。
我首先使用 Skeleton 原型在普通 GAE maven 项目上创建我的项目,只需遵循使用 Apache Maven-Java — Google Cloud Platform中的相关步骤。从需求一直到使用开发服务器测试您的应用程序。
之后,我使用“导入现有的 Maven 项目”将该项目导入 Eclipse JEE (Mars)。开始开发。
当我需要调试时,我只需要执行下面解释的几个步骤。
转到Run -> Debug Configurations,单击Remote Java Application并通过单击New按钮创建一个新配置(参见屏幕截图,过滤器文本框上方的左上角)。
通过选择您的特定项目并为配置指定一个合适的名称来填写详细信息,如下所示(让端口为 8000),然后单击Apply:
在项目的 pom.xml 中,找到插件的配置appengine-maven-plugin
并取消注释以下行:
<jvmFlags>
<jvmFlag>-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n</jvmFlag>
</jvmFlags>
mvn appengine:devserver
从命令行运行命令正如标题所说...
单击Debug按钮旁边的小三角形,然后选择您刚刚设置的调试配置的名称(在我的示例中为“HelloWorldServlet”)。
我大致按照@ developers.google.com /appengine/docs/java/webtoolsplatform 的步骤来支持我以前的方法。