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.


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.

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


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.


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


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.


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.


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.