Wie debugge ich ein Maven-Ziel mit der Idee von Intellij?


99

Können Sie mit Intellij IDEA ein Maven-Ziel debuggen? Ich weiß, dass ich mit der rechten Maustaste klicken und Debug ausführen kann . Das Maven-Plugin wird jedoch nicht in meiner Liste der externen Bibliotheken angezeigt , sodass ich nicht in den Code gehen und einen Haltepunkt festlegen kann. Somit durchläuft Debug die Ziele, ohne anzuhalten, wie es Run tut.

Ich verwende OS X 10.8 und IDEA 12.0.2.

EDIT: Ziel

Ich habe benutzerdefinierte specRunner für geschrieben https://github.com/searls/jasmine-maven-plugin - jedoch $ specs $ bleibt leer. Also versuche ich zu sehen, welche Dateien tatsächlich geladen sind.


2
ein Maven-Ziel debuggen ? Was ist das Maven-Ziel ? was willst du erreichen und was ist dein eigentliches Problem?
Alonso Dominguez

Mit Maven Goal meine ich Jasmin: Test oder Jasmin: Bdd. Soweit ich gesehen habe, muss jedes Mojo eine execute () -Methode implementieren, die ich debuggen möchte. Da ich jedoch von IDEA aus keinen Zugriff auf das JAR habe, kann ich keinen Haltepunkt festlegen.
Rweng

Antworten:


190

Herausgefunden:

  1. Führen Sie über die Befehlszeile Maven Goal mit mvnDebuganstelle von aus mvn. Z.BmvnDebug clean
  2. Öffnen Sie die Quelle des Maven-Plugins, das Sie in IntelliJ debuggen möchten, und legen Sie einen breakPoint fest
  3. Fügen Sie in IDEA eine RemoteKonfiguration hinzu.
    1. Stellen Sie unter Einstellungen Transport: Socket, Debugger-Modus: Anhängen, Host: localhost, Port: 8000 (Standardport von mvnDebug) ein.
  4. Führen Sie die Konfiguration im Debug-Modus aus. Es sollte eine Verbindung zum wartenden mvnDebug jvm herstellen.

2
Wie öffnet man die Quelle des Maven-Plugins in Intellij?
CorayThan

Ich glaube, ich habe es in der richtigen Version von Github geklont. Der Rest geschah automatisch.
Rweng

3
Was ist, wenn ich Tests mit ausführen möchte mvn test -Dtest=com.example.MyTest(mein Testfall schlägt nur fehl, wenn er mit maven ausgeführt wird) - IDEA-Haltepunkte werden in diesem Fall anscheinend ignoriert ... :(
RobertG

2
Gefunden: In stackoverflow.com/q/6573289/1143126 , dies ist im Grunde die Frage gefragt
RobertG

Im Einzelnen erfahren Sie hier, wie Sie ein Maven-Ziel mit todsicherem Fehler
JJ Brown

40

Sehr leicht. Ich verwende Intellj Idea 15.0.4

  1. Setzen Sie den Haltepunkt in Ihrem Maven-Plugin
  2. Gehen Sie im Tag "Maven Projects" zu dem Projekt, das Ihr Maven-Plugin verwendet.
  3. In "Plugins" finden Sie Ihr Plugin und klicken Sie mit der rechten Maustaste auf das Ziel und debuggen Sie

Hier ist ein Screenshot:

Bildschirmfoto


1
Obwohl diese Antwort eine negative Bewertung hat, hat sie mir geholfen, das Problem zu beheben (wie man ein Maven-basiertes Projekt in IntelliJ debuggt), und als ich das Problem "googelte", führte es mich zu dieser Seite.
Gbmhunter

Vielen Dank, Sir. Ihre Antwort hat mir geholfen, herauszufinden, wie man Maven-Plugins während des Laufs in der Idee automatisch verwendet
Anatoly Yakimchuk

Dies ist eigentlich eine sehr gute Antwort. Für mich ist es definitiv einfacher und einfacher, dies auf diese Weise zu tun, als ein Remote-Debug einzurichten (wie in der akzeptierten Antwort vorgeschlagen). Ich bin mir nicht sicher, warum der andere akzeptiert wurde. Vielleicht würde es für die in der Frage beschriebene Situation nicht funktionieren, aber wenn es definitiv für mich funktioniert, also danke!
Chanandler Bong

2
"Setze den Haltepunkt in deinem Maven Plugin" Ich bin mir nicht sicher was das eigentlich bedeutet? Ist das anders als das Setzen eines Haltepunkts in der Java-Klasse selbst?
Amalgovinus

"Setzen Sie den Haltepunkt in Ihrem Maven-Plugin" bedeutet, dass Sie den Haltepunkt in Ihre Maven-Plugin-Klasse setzen
Gorums

17

Alte Frage, aber ich hatte das gleiche Bedürfnis und es dauerte eine Weile, bis es funktionierte. Hoffentlich kann jemand helfen.

Verwenden Sie zum Testen des Debuggens:

mvn <goal> -Dmaven.surefire.debug 

oder

mvn <goal> -Dmaven.failsafe.debug

Wenn die Ausführung stoppt und den Socket unter der Adresse 5005 (Standard) abhört, führen Sie Ihren konfigurierten Remote-Debugger aus.

So konfigurieren Sie es:

Ausführen -> Konfigurationen bearbeiten -> Remote-Transport: Socket-Debugger-Modus: Port anhängen: 5005 (Standard)

-> Speichern.


10

Der einfachste Weg, das Maven-Ziel NUR in IntelliJ zu debuggen, besteht darin, ein reguläres Maven-Ziel zu erstellen und auf der Registerkarte "Läufer" die folgenden VM-Optionen zu übergeben:

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

Dabei ist 8000 eine Portnummer für das Remote-Debugging.

Maven Zielkonfiguration

Erstellen Sie dann eine neue Remote-Konfiguration mit Port 8000. Führen Sie diese Konfiguration aus, nachdem Sie das Maven-Ziel ausgeführt haben.

Remote-Debugging-Konfiguration


8

Ich denke, die einfachste Lösung besteht darin, das Maven-Plugin vorübergehend als Abhängigkeit hinzuzufügen. Sobald dies erledigt ist, behandelt IntelliJ dies wie jede andere Abhängigkeit und Sie können Haltepunkte auf die übliche Weise festlegen.


1
Punkt dies, und anstatt mvn verwenden: mvnDebug ..., dann erstellen Sie einen Remote-Debug-Runner in Intellij auf Port 8000
user85155

3

Entweder können Sie auf die obige Antwort verweisen oder dieses Plugin einfach zu pom.xml hinzufügen

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

Und laufen Maven Ziel mit mvnstatt mvnDebug. Z.Bmvn spring-boot:run

Fügen Sie in IDEA eine Remote-Konfiguration hinzu. Stellen Sie unter Einstellungen Transport: Socket, Debugger-Modus: Anhängen, Host: localhost, Port: 8000 (Standardport von mvnDebug) ein.

Führen Sie Debug in IDEA aus, wann immer Sie den Code debuggen möchten.


3
Die Frage erwähnte nicht Frühling, diese Antwort ist Frühlingsspezifisch
Amalgovinus

1

Da Sie mit Intellij arbeiten, ist dort bereits ein Debugger integriert, und Sie müssen nicht unbedingt mvnDebug verwenden, ein Befehlszeilentool. Lesen Sie dieses Tutorial: Debuggen von Maven-Anwendungen in Intellij IDEA .

Das Tutorial verwendet das Maven Exec Plugin und ermöglicht das Debuggen der Anwendung, ohne die Befehlszeile oder verwenden zu müssen MvnDebug. Das Teilen von Gedanken könnte hier von Wert sein.


2
Das Tutorial behandelt nur das Debuggen exec:java. Wenn Sie jedoch zusätzliche Argumente für JVM angeben müssen, müssen Sie diese verwenden exec:exec(siehe stackoverflow.com/questions/7305090/… ), die auf diese Weise nicht debuggt werden können.
Mirelon

0

@ Peter Szantos Antwort funktioniert für mich, aber ich mag es nicht, meinen Quellcode durcheinander zu bringen.

Und ich kann diesen MvnDebugWeg nicht zum Laufen bringen .

Also versuche ich einen anderen Weg, füge eine Plugin-Quelle als IDEA-Modul hinzu .

Hier ist der Detailschritt:

  1. Klonen Sie die Plugin-Quelle als eigenständiges Projekt.

  2. Gehen File -> New -> Module from Exist SourcesSie in Ihrem Projekt zu dem Plugin-Projekt, das Sie in Schritt 1 geklont haben, und fügen Sie es hinzu.

  3. Jetzt können Sie den Plugin-Quellcode öffnen und einen Haltepunkt festlegen.

  4. Führen Sie Ihr Maven-Ziel als Debug-Modus aus. Es sollte am Haltepunkt anhalten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.