2014-07-24 3 views
8

Ich folge dem Udacity App Engine Kurs, aber als Bastler folge ich mit Gradle und IDEA (Open Source Edition).Wie debuggen Sie den lokalen AppEngine-Server von IDEA + Gradle?

Ich habe Setup das Projekt erfolgreich die folgende build.gradle Datei

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' 
} 

ich mit dem lokalen Entwickler-Server von IDEA leitete mit einem Gradle Konfiguration mit der appengineRun Konfiguration läuft und stoppe es eine weitere Aufgabe für appengineStop mit . Das funktioniert, aber ich habe keine Möglichkeit zu debuggen, da die Breakpoints nicht getroffen werden.

Ich glaube, dieses Problem mit Haltepunkten ist, weil IDEA keine Ahnung hat (ich bin schrecklich bei Wortspielen), dass es in den Anlegestegserver, der den AppEngine-Server unterstützt, Haken, aber das ist eine wilde Aufnahme, wie ich keine Ahnung davon habe Die IDEA-Interna, viel weniger, wie es Gradle-Ausführungen handhabt.

Wie kann ich die Breakpoint-Fähigkeit wiedererlangen? Ist es machbar ohne ein benutzerdefiniertes Plugin?

+0

Haben Sie jemals einen besseren Weg gefunden, dies zu tun? Es ist ein wenig nervig, einen zweistufigen Debug-Prozess zu haben. –

+0

Nein. Ich war nur neugierig auf Java Web-Entwicklung, so dass ich kaum die Oberfläche darauf gekratzt. .Net-Entwickler im Herzen. Es tut uns leid. – Machinarius

Antwort

10

Zuerst müssen Sie die JVM-Debug-Parameter in Ihrer build.gradle-Datei festlegen, damit Sie den lokalen Entwicklungsserver remote debuggen können.

appengine { 
    ... 
    jvmFlags = ['-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000'] 
} 

Dann brauchen Sie einen Run/Debug-Konfiguration in IntelliJ IDEA (auf den oben genannten Parametern basiert) zu schaffen für Remote-Betrieb oder Debugging-Prozesse verwendet werden. Mit dem Remote-Ausführen/Debuggen können Sie eine Verbindung zu einer laufenden JVM herstellen.

Sie können weitere Einzelheiten here finden. Gehen Sie jedoch im Wesentlichen zu Run/Edit Configurations ..., klicken Sie im Dialogfeld auf Neue Konfiguration hinzufügen (+) und wählen Sie Remote. Stellen Sie sicher, dass die Konfiguration den JVM-Flags (insbesondere dem Port) entspricht. Speichern und schließen Sie das Dialogfeld.

Starten Sie Ihren lokalen Entwicklungsserver und verbinden Sie den Debugger (Run/Debug).

+0

Nicht der einfachste oder intuitivste Weg, aber es funktioniert. Vielen Dank – Machinarius

Verwandte Themen