我正在学习 Udacity App Engine 课程,但作为修补者,我正在使用 Gradle 和 IDEA(开源版本)。
我已经使用以下 build.gradle 文件成功设置了项目
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.appengine:gradle-appengine-plugin:1.9.7'
}
}
apply plugin: 'war'
apply plugin: 'appengine'
sourceCompatibility = 1.8
version = '1.0'
appengine {
daemon = true
downloadSdk = true
appcfg {
oauth2 = true
}
}
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.7'
compile 'com.google.inject:guice:3.0'
compile 'com.googlecode.objectify:objectify:5.0.3'
compile 'com.google.appengine:appengine-api-1.0-sdk:1.9.7'
compile 'com.google.appengine:appengine-endpoints:1.9.7'
compile 'javax.servlet:servlet-api:2.5'
compile 'javax.inject:javax.inject:1'
testCompile 'junit:junit:4.11'
testCompile 'com.google.appengine:appengine-testing:1.9.7'
testCompile 'com.google.appengine:appengine-api-stubs:1.9.7'
}
我正在使用 Gradle 运行配置从 IDEA 运行本地开发服务器appengineRun
配置并使用另一个任务停止它appengineStop
。这是可行的,但我无法调试,因为我设置的断点没有被命中。
我相信断点的这个问题是因为IDEA不知道(我对双关语很糟糕)它必须连接到支持AppEngine服务器的jetty服务器,但这是一个疯狂的镜头,因为我对IDEA的内部结构一无所知。更少的是它如何处理 Gradle 执行。
如何恢复断点能力?没有自定义插件是否可行?
首先,您必须在 JVM 中设置 JVM 调试参数build.gradle
文件,以便您能够远程调试本地开发服务器。
appengine {
...
jvmFlags = ['-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000']
}
然后您需要在IntelliJ IDEA中创建一个运行/调试配置(基于上述参数)以用于远程运行或调试进程。远程运行/调试使您能够连接到正在运行的 JVM。
您可以找到更多详细信息here http://www.jetbrains.com/idea/webhelp/run-debug-configuration-remote.html。但基本上都是去运行/编辑配置...,在对话框中单击添加新配置(+) 并选择Remote。确保配置与 JVM 标志(尤其是端口)匹配。保存并关闭对话框。
启动本地开发服务器并连接调试器(运行/调试).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)