Jak zdebugować cel Maven za pomocą Intellij Idea?

100

Czy możesz debugować cel maven za pomocą Intellij IDEA? Wiem, że mogę kliknąć prawym przyciskiem myszy i uruchomić debugowanie . Jednak wtyczka maven nie pojawia się na mojej liście bibliotek zewnętrznych , więc nie mogę wejść do kodu i ustawić punktu przerwania. W ten sposób debugowanie przebiega przez cele bez zatrzymywania się, tak jak robi to Run .

Używam OS X 10.8 i IDEA 12.0.2.

EDYCJA: Cel

Napisałem niestandardowy specRunner dla https://github.com/searls/jasmine-maven-plugin - Jednak $ specs $ pozostaje puste. Więc próbuję zobaczyć, które pliki są faktycznie załadowane.

rweng
źródło
2
zdebugować cel maven ? jaki jest ten cel maven ? co chcesz osiągnąć a jaki jest twój rzeczywisty problem?
Alonso Dominguez
Z celem Maven mam na myśli jaśmin: test, czy jaśmin: bdd. O ile widziałem, każde Mojo musi implementować metodę execute (), którą chciałbym debugować. Ponieważ jednak nie mam dostępu do jar z IDEA, nie mogę ustawić punktu przerwania.
rweng

Odpowiedzi:

190

Domyśliłam się:

  1. z wiersza poleceń uruchom maven goal z mvnDebugzamiast mvn. Na przykładmvnDebug clean
  2. Otwórz źródło wtyczki maven, którą chcesz debugować w intelliJ i ustaw punkt przerwania
  3. W IDEA dodaj Remotekonfigurację.
    1. W obszarze Ustawienia ustaw Transport: Socket, Debugger Mode: Attach, Host: localhost, Port: 8000 (domyślny port mvnDebug).
  4. Uruchom konfigurację w trybie debugowania. Powinien połączyć się z czekającym jvm mvnDebug.
rweng
źródło
2
Jak otworzyć źródło wtyczki maven w Intellij?
CorayThan
Myślę, że sklonowałem go z githuba we właściwej wersji. Reszta wydarzyła się automatycznie.
rweng
3
Co jeśli chcę uruchomić testy przy użyciu mvn test -Dtest=com.example.MyTest(mój przypadek testowy kończy się niepowodzeniem tylko wtedy, gdy jest uruchomiony przy użyciu maven) - punkty przerwania IDEA są w tym przypadku ignorowane, wygląda na to ... :(
RobertG
2
Znalazłem to: W stackoverflow.com/q/6573289/1143126 , to w zasadzie zapytało pytanie
RobertG
Konkretnie, oto jak debugować cel Maven za pomocą surefire: stackoverflow.com/a/8339155/929708
JJ Brown
40

Bardzo łatwe. Używam Intellj Idea 15.0.4

  1. Ustaw punkt przerwania w swojej wtyczce Maven
  2. W tagu „Maven Projects” przejdź do projektu, który używa Twojej wtyczki Maven.
  3. W "Wtyczkach" znajdź swoją wtyczkę i kliknij prawym przyciskiem myszy nad celem i Debuguj

Oto zrzut ekranu:

zrzut ekranu

gorums
źródło
1
Chociaż ta odpowiedź ma negatywny wynik, pomogła mi rozwiązać problem, który miałem (jak debugować projekt oparty na mavenie w IntelliJ), a gdy „googlowałem”, doprowadził mnie do tej strony.
gbmhunter
Dziękuję panu, twoja odpowiedź pomogła mi dowiedzieć się, jak automatycznie używać wtyczek maven podczas uruchamiania pomysłu
Anatoly Yakimchuk
To właściwie bardzo dobra odpowiedź. Dla mnie zdecydowanie łatwiej i prościej jest zrobić to w ten sposób niż skonfigurować zdalny debug (jak sugeruje zaakceptowana odpowiedź). Nie wiem, dlaczego ten drugi został przyjęty. Być może to nie zadziała w sytuacji opisanej w pytaniu, ale jeśli na pewno zadziała, to dziękuję!
Chanandler Bong
2
„Ustaw punkt przerwania w swojej wtyczce Maven” Nie jestem pewien, co to właściwie oznacza? Czy to różni się od umieszczenia punktu przerwania w samej klasie Java?
Amalgovinus
„Ustaw punkt przerwania w swojej wtyczce maven” oznacza umieszczenie punktu przerwania w klasie wtyczki maven
gorums
17

Stare pytanie, ale miałem taką samą potrzebę i trochę mi zajęło, zanim to zadziałało. Mam nadzieję, że może komuś pomóc.

Do debugowania testów użyj:

mvn <goal> -Dmaven.surefire.debug 

lub

mvn <goal> -Dmaven.failsafe.debug

Gdy wykonanie zatrzymuje się i nasłuchuje gniazda pod adresem 5005 (domyślnie), uruchamiasz skonfigurowany zdalny debugger.

Jak to skonfigurować:

Uruchom -> Edytuj konfiguracje -> Transport zdalny: tryb debugera gniazda: Dołącz port: 5005 (domyślnie)

-> Zapisz.

vilkg
źródło
10

Najłatwiejszym sposobem debugowania celu Maven TYLKO w IntelliJ jest utworzenie zwykłego celu maven i przekazanie tych opcji VM w zakładce runner:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

Gdzie 8000 to numer portu do zdalnego debugowania.

Konfiguracja celu Maven

Następnie utwórz nową konfigurację zdalną z portem 8000. Uruchom tę konfigurację po uruchomieniu celu Maven.

Konfiguracja zdalnego debugowania

Michał Stochmal
źródło
8

Myślę, że najłatwiejszym rozwiązaniem jest tymczasowe dodanie wtyczki maven jako zależności. Gdy to zrobisz, IntelliJ potraktuje to tak jak każdą inną zależność i możesz ustawić punkty przerwania w zwykły sposób.

Peter Szanto
źródło
1
kropka tego, a zamiast mvn użyj: mvnDebug ..., a następnie utwórz zdalny program uruchamiający debugowanie w intellij na porcie 8000
user85155
3

Możesz odnieść się do powyższej odpowiedzi lub po prostu dodać tę wtyczkę do pom.xml

           <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
            <jvmArguments>
            -Xdebug - 
            Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
            </jvmArguments>
            </configuration>
        </plugin>

I biegnij maven cel z mvnzamiast mvnDebug. Na przykładmvn spring-boot:run

W IDEA dodaj konfigurację zdalną. W obszarze Ustawienia ustaw Transport: Socket, Debugger Mode: Attach, Host: localhost, Port: 8000 (domyślny port mvnDebug).

Uruchom jako debugowanie w IDEA, ilekroć chcesz debugować kod.

abhishek ringsia
źródło
3
Pytanie nie dotyczyło wiosny, ta odpowiedź jest specyficzna dla wiosny
Amalgovinus
1

Ponieważ pracujesz z Intellij, jest tam już wbudowany debugger i nie musisz koniecznie używać mvnDebug, który jest narzędziem wiersza poleceń. Sprawdź ten samouczek: Jak debugować aplikacje Maven w Intellij IDEA .

Samouczek wykorzystuje wtyczkę Maven Exec i umożliwia debugowanie aplikacji bez konieczności używania wiersza poleceń lub MvnDebug. Warto tutaj podzielić się przemyśleniami.

ambodi
źródło
2
Samouczek obejmuje tylko debugowanie exec:java. Jeśli jednak chcesz podać dodatkowe argumenty dla JVM, musisz użyć exec:exec(patrz stackoverflow.com/questions/7305090/… ), którego nie można debugować w ten sposób.
mirelon
0

Odpowiedź @Peter Szanto działa dla mnie, ale nie lubię zepsuć kodu źródłowego.

I nie mogę sprawić, żeby to MvnDebugzadziałało.

Więc spróbuję w inny sposób, dodaję źródło wtyczki jako moduł IDEA .

Oto krok szczegółowy:

  1. Sklonuj źródło wtyczki jako niezależny projekt.

  2. W swoim projekcie przejdź do File -> New -> Module from Exist Sourcesi dodaj projekt wtyczki sklonowany w kroku 1.

  3. Teraz możesz otworzyć kod źródłowy wtyczki i ustawić punkt przerwania.

  4. Uruchom swój cel maven w trybie debugowania, powinien zatrzymać się w punkcie przerwania.

user1686407
źródło