如何制作Eclipse和mvn appengine:devserver互相交流?

时间:2012-12-18 01:28:05

标签: eclipse google-app-engine maven

我正在从Google Plugin for Eclipse切换到官方Google App Engine Maven Plugin。 我希望,最后一件事是我无法弄清楚如何设置一个好的调试工作流程。当我使用GPE时,我只是设置断点并且调试器在那里自动停止,但是当我通过mvn appengine:devserver运行开发服务器时,我不认为开发服务器和eclipse相互了解。

如何让他们互相交谈?

6 个答案:

答案 0 :(得分:45)

第一个选项是设置项目以使用WTP作为文档@ https://cloud.google.com/appengine/docs/java/webtoolsplatform。这是我切换到的方法。

第二个选项是使用两个调试配置。

第一个调试配置将运行您的maven目标,即appengine:devserverenter image description here

第二个是Remote Java Application配置,并将调试客户端连接到devserver jvm enter image description here

这也需要将一些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

enter image description here

在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年答案相关

我在2015年9月创建了一个GAE(Java)项目,以下内容适用于此项目和类似项目。

我开始使用Skeleton原型在普通GAE maven项目中创建我的项目,只需按照Using Apache Maven - Java — Google Cloud Platform中的相关步骤操作即可。从RequirementsTesting your app with the development server进行了跟进。

之后我使用&#34;导入现有的Maven项目&#34;将此项目导入Eclipse JEE(Mars)。开始开发。

当我需要调试时,我只需执行下面介绍的几个步骤。

创建调试配置

转到运行 - &gt;调试配置,单击远程Java应用程序并单击新建按钮创建新配置(请参见屏幕截图,过滤器文本框上方的左上角)。

Create a new debug configuration for Remote Java Application

通过选择您的特定项目并为配置提供合适的名称来填写详细信息,如下所示(让端口为8000)并单击应用

Settings for the debug configuration

取消注释pom.xml

中的某些行

在项目的pom.xml中,找到插件appengine-maven-plugin的配置并取消注释以下行:

                <jvmFlags>
                    <jvmFlag>-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n</jvmFlag>
                </jvmFlags>

从命令行运行mvn appengine:devserver命令

正如标题所说......

从Eclipse

中附加调试器

单击 Debug 按钮旁边的小三角形,然后选择刚刚设置的调试配置的名称(&#34; HelloWorldServlet&#34;在我的示例中)。 / p>