2016-02-03 7 views
5

Próbuję przesłać wersje klienta Codename One, które są bardzo dostosowanymi skryptami dla mrówek do pracy ze stopniem. Po uruchomieniu kryptonim jednej aplikacji na symulatorze nie są uruchomione aplikacje główne klasy, ale raczej coś takiego:Miejsce docelowe debugowania dla gradle równoważne blokowi run {} dla przekazywania argumentów

java -classpath CodenameOneJarList com.codename1.impl.javase.Simulator nameOfTheMainClassForTheApp 

Aby to zrobić w Gradle edytowany podstawowy skrypt kompilacji, takich jak:

apply plugin: 'java' 
apply plugin: 'application' 
mainClassName = "com.codename1.impl.javase.Simulator" 

// for netbeans 
ext.mainClass = 'com.codename1.impl.javase.Simulator' 

Następnie na dole zrobiłem tak:

run { 
    args 'com.mycompany.myapp.Main' 
} 

to działało zgodnie z oczekiwaniami i uruchomiony symulator po naciśnięciu bieg w IDE (NetBeans). Nie jestem pewien, czy to jest "właściwa rzecz" i czy będzie działać w innych środowiskach IDE.

Następnie, gdy próbowałem uruchomić w debugerze, argumenty nie zostały przekazane, ponieważ domyślam się, że cel run nie został wywołany?

Próbowałem w ten sposób:

debug { 
    args 'com.mycompany.myapp.Main' 
} 

co oczywiście nie powiodło się. Nie jestem do końca pewien, gdzie przekazywać argumenty do debuggera?

Czy jest to standaryzowane według gradle?

Czy jestem we właściwym kierunku, jeśli chodzi o przekazywanie argumentów?

Do czego służy "deklaratywna" składnia "uruchom"? Jak znaleźć inne potencjalne rodzaje bloków?

Niestety, wyszukiwanie google pod kątem podstawowym, takim jak "run/debug", nie przynosi żadnego pożytku.

Odpowiedz

1

Sekcja run w twoim build.gradle to DSL dodany do twojego projektu z wtyczki application, którą zastosowałeś. Here is more information o wtyczce. Jak już zauważyliście, wtyczka aplikacji jest naprawdę nastawiona na tworzenie działającego słoika, dystrybucję i uruchamianie - nie tyle na debugowanie i nie ma na to żadnego wsparcia.

Aby rozpocząć proces Java z Gradle, można użyć zadania JavaExec i dowolnych arbitralnych argumentów JVM przy użyciu pola args, w tym między innymi opcji debugowania.

Można zrobić coś takiego:

task runApp(type: JavaExec) { 
    classpath = sourceSets.main.runtimeClasspath 
    main = 'package.Main' //class to run 

    // add debug arguments as required, for example: 
    args '-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8888,suspend=n' 
} 

metę gradle runApp aby rozpocząć aplikację w trybie debugowania, a następnie podłączyć IDE. Nie będąc wystarczająco zaznajomionym z Netbeans, nie mogę komentować, jak dołączyć Netbeans do debugującego procesu java.

+0

Dzięki. Czy istnieje wtyczka, która pozwoli mi to zrobić? Zdefiniuj cel debugowania i ogólnie wszystkie zadania, których potrzebuje IDE, czy też muszę zrobić coś konkretnego na IDE, aby to zadziałało? Jeśli to drugie, gdzie zacznę szukać takich hacków? –

+0

FYI Oczywiście mam wtyczkę gradbeans gradle zainstalowaną ;-) –

+0

Jak byś debugował określoną klasę w zwykłym projekcie java (bez gradle) w netbeans? – RaGe

Powiązane problemy