2014-07-24 9 views
8

Podążam za tokiem aplikacji Udacity App Engine, ale jako drukarz używam Gradle i IDEA (edycja Open Source).Jak debugować lokalny serwer AppEngine z IDEA + Gradle?

mam setup projekt z powodzeniem przy użyciu następujący plik 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' 
} 

Używam lokalny serwer dev z IDEA użyciem Gradle uruchomić konfigurację z konfiguracją appengineRun i zatrzymywanie go przy użyciu innego zadania dla appengineStop . To działa, ale nie mam możliwości debugowania, ponieważ punkty przerwania, które stawiam, nie są trafione.

Wierzę, że ten problem z przerwami jest taki, że IDEA nie ma pojęcia (jestem okropny z powodu kalamburów), że musi podłączyć się do serwera pomostu, który wspiera serwer AppEngine, ale jest to dzikie uderzenie, ponieważ nie znam Elementy wewnętrzne IDEA, a tym bardziej sposób, w jaki wykonuje on egzekucje Gradle.

Jak mogę odzyskać zdolność breakpoint? Czy jest to możliwe bez niestandardowej wtyczki?

+0

Czy kiedykolwiek odkryłeś lepszy sposób na zrobienie tego? Jest to trochę denerwujące, ponieważ ma dwustopniowy proces debugowania. –

+0

Nie. Po prostu interesowałem się tworzeniem stron w Javie, więc ledwo podrapałem powierzchnię. Programista .Net w sercu. Przepraszam. – Machinarius

Odpowiedz

10

Najpierw należy ustawić parametry debugowania JVM w pliku build.gradle, aby zdalnie można było zdalnie debugować lokalny serwer programistyczny.

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

Następnie należy utworzyć konfigurację run/debugowania w IntelliJ IDEA (na podstawie powyższych parametrów), który będzie używany do zdalnego debugowania lub uruchomionych procesów. Zdalne uruchamianie/debugowanie umożliwia nawiązanie połączenia z działającą maszyną JVM.

Możesz znaleźć więcej szczegółów here. Ale w zasadzie przejdź do Przeprowadź/edytuj konfiguracje ..., w oknie dialogowym kliknij na Dodaj nową konfigurację (+) i wybierz Zdalne. Upewnij się, że konfiguracja pasuje do flag JVM (zwłaszcza portu). Zapisz i zamknij okno dialogowe.

Uruchom lokalny serwer programistyczny i podłącz debugger (Uruchom/debugowanie).

+0

Nie jest to najprostszy lub najbardziej intuicyjny sposób, ale działa. Dzięki – Machinarius

Powiązane problemy