我正在从Google Plugin for Eclipse切换到官方Google App Engine Maven Plugin。
我希望,最后一件事是我无法弄清楚如何设置一个好的调试工作流程。当我使用GPE时,我只是设置断点并且调试器在那里自动停止,但是当我通过mvn appengine:devserver
运行开发服务器时,我不认为开发服务器和eclipse相互了解。
如何让他们互相交谈?
答案 0 :(得分:45)
第一个选项是设置项目以使用WTP作为文档@ https://cloud.google.com/appengine/docs/java/webtoolsplatform。这是我切换到的方法。
第二个选项是使用两个调试配置。
第一个调试配置将运行您的maven目标,即appengine:devserver
。
第二个是Remote Java Application
配置,并将调试客户端连接到devserver jvm
这也需要将一些jvm args传递给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调试配置,然后运行调试客户端配置,然后运行您的应用程序。
尚未支持hotswap,因此如果您更改任何非资源文件(任何Java源代码),devserver将无法看到它们。资源文件将被部署(静态文件:html,js)。
答案 1 :(得分:1)
你应该在调试模式中从 eclipse 执行 mvn 。
在Eclipse中,您可以从eclipse顶部工具栏“Run” - &gt;配置此类maven构建命令。 “调试配置” - &gt; “Maven Build”
一旦在eclipse调试模式下启动maven,你应该能够点击断点。
修改 - 另一种选择是设置远程调试,即“运行” - &gt; “调试配置” - &gt; “远程Java应用程序”并监听远程调试端口,即你应该确保appengine:devserver使用远程调试端口参数启动 - 参考 - Remote Debugging in eclipse
答案 2 :(得分:1)
这question可能会给你一个问题的提示。 Maven appengine:devserver在一个单独的进程上启动开发服务器。但是,Eclipse只知道Maven进程本身(这是您在调试视图中看到的)。此外,由于无法使用调试端口等参数启动开发服务器,因此它可能永远无法连接到调试器。
链接的问题表明有一个非官方的Maven GAE插件,它接受了争论。还有一张增加官方插件的新票,以及插件开发者很快就会实现这一功能的承诺。
答案 3 :(得分:1)
我会看到我还能做些什么来简化eclipse集成,但现在对appengine-maven-plugin项目的问题进行了更新:http://code.google.com/p/appengine-maven-plugin/issues/detail?id=3&can=1所以看一看是否对jvm参数的支持可以帮助你。
请让我知道你的经历,我总是赞成令人敬畏的事情。
答案 4 :(得分:0)
我粗略地按照@ developers.google.com/appengine/docs/java/webtoolsplatform的步骤赞成我以前的方法。
答案 5 :(得分:0)
我在2015年9月创建了一个GAE(Java)项目,以下内容适用于此项目和类似项目。
我开始使用Skeleton原型在普通GAE maven项目中创建我的项目,只需按照Using Apache Maven - Java — Google Cloud Platform中的相关步骤操作即可。从Requirements到Testing your app with the development server进行了跟进。
之后我使用&#34;导入现有的Maven项目&#34;将此项目导入Eclipse JEE(Mars)。开始开发。
当我需要调试时,我只需执行下面介绍的几个步骤。
转到运行 - &gt;调试配置,单击远程Java应用程序并单击新建按钮创建新配置(请参见屏幕截图,过滤器文本框上方的左上角)。
通过选择您的特定项目并为配置提供合适的名称来填写详细信息,如下所示(让端口为8000)并单击应用:
在项目的pom.xml中,找到插件appengine-maven-plugin
的配置并取消注释以下行:
<jvmFlags>
<jvmFlag>-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n</jvmFlag>
</jvmFlags>
mvn appengine:devserver
命令正如标题所说......
单击 Debug 按钮旁边的小三角形,然后选择刚刚设置的调试配置的名称(&#34; HelloWorldServlet&#34;在我的示例中)。 / p>