Come eseguire il debug di un obiettivo esperto con l'idea di intellij?


100

Potete eseguire il debug di un obiettivo esperto con Intellij IDEA? So di poter fare clic con il pulsante destro del mouse ed eseguire Debug . Tuttavia, il plug-in Maven non viene visualizzato nell'elenco delle librerie esterne , quindi non posso entrare nel codice e impostare un punto di interruzione. Pertanto, Debug esegue gli obiettivi senza interruzioni, come fa Run .

Sto usando OS X 10.8 e IDEA 12.0.2.

EDIT: obiettivo

Ho scritto specRunner personalizzato per https://github.com/searls/jasmine-maven-plugin - Tuttavia, $ specs $ rimane vuoto. Quindi cerco di vedere quali file sono effettivamente caricati.


2
eseguire il debug di un obiettivo esperto ? qual è l' obiettivo di Maven ? cosa vuoi ottenere? e qual è il tuo vero problema?
Alonso Dominguez

Con obiettivo Maven intendo jasmine: test, o jasmine: bdd. Per quanto ho visto, ogni Mojo deve implementare un metodo execute () di cui mi piacerebbe eseguire il debug. Tuttavia, poiché non ho accesso al jar da IDEA, non posso impostare un punto di interruzione.
rweng

Risposte:


190

Capito:

  1. dalla riga di comando, esegui maven goal con mvnDebuginvece di mvn. Per esempiomvnDebug clean
  2. Apri il sorgente del plugin maven di cui desideri eseguire il debug in intelliJ e imposta un breakPoint
  3. In IDEA, aggiungi un file RemoteConfiguration.
    1. In Impostazioni, imposta Transport: Socket, Debugger Mode: Attach, Host: localhost, Port: 8000 (porta predefinita di mvnDebug).
  4. Eseguire la configurazione in modalità debug. Dovrebbe connettersi alla jvm mvnDebug in attesa.

2
Come si apre il sorgente del plug-in Maven in Intellij?
CorayThan

Penso di averlo clonato da GitHub nella versione corretta. Il resto è avvenuto automaticamente.
rweng

3
E se volessi eseguire i test usando mvn test -Dtest=com.example.MyTest(il mio test case fallisce solo quando viene eseguito usando Maven) - I breakpoint IDEA vengono ignorati in questo caso, sembra ... :(
RobertG

2
Trovato: in stackoverflow.com/q/6573289/1143126 , questa in pratica è la domanda richiesta
RobertG,

Nello specifico, ecco come eseguire il debug di un obiettivo esperto con infallibile: stackoverflow.com/a/8339155/929708
JJ Brown

40

Molto facile. Sto usando Intellj Idea 15.0.4

  1. Imposta il punto di interruzione nel tuo plug-in Maven
  2. Nel tag "Maven Projects" vai al progetto che la strega sta usando il tuo plugin Maven.
  3. In "Plugin" trova il tuo plugin e sopra l'obiettivo fai clic con il pulsante destro del mouse ed esegui il debug

Ecco uno screenshot:

immagine dello schermo


1
Sebbene questa risposta abbia un punteggio negativo, mi ha aiutato a risolvere il problema che avevo (come eseguire il debug di un progetto basato su Maven in IntelliJ) e quando ho "cercato su Google" il problema mi ha portato a questa pagina.
gbmhunter

Grazie signore, la tua risposta mi ha aiutato a capire come utilizzare automaticamente i plugin di
Maven

Questa in realtà è un'ottima risposta. Per me è decisamente più facile e più semplice farlo in questo modo che impostare un debug remoto (come suggerito nella risposta accettata). Non sono sicuro del motivo per cui l'altro è stato accettato. Forse non funzionerebbe per la situazione descritta nella domanda, ma se sicuramente funzionasse per me, quindi grazie!
Chanandler Bong

2
"Imposta il punto di interruzione nel tuo plugin Maven" Non sono sicuro di cosa significhi effettivamente? È diverso dall'inserimento di un punto di interruzione nella stessa classe java?
Amalgovinus

"Imposta il punto di interruzione nel tuo plug
Maven

17

Vecchia domanda, ma avevo lo stesso bisogno e mi ci è voluto un po 'per farlo funzionare. Si spera che possa aiutare qualcuno.

Per il debug di prova utilizzare:

mvn <goal> -Dmaven.surefire.debug 

o

mvn <goal> -Dmaven.failsafe.debug

Quando l'esecuzione si interrompe e ascolta il socket all'indirizzo 5005 (predefinito), esegui il debugger remoto configurato.

Come configurarlo:

Esegui -> Modifica configurazioni -> Trasporto remoto: socket Modalità debugger: Collega porta: 5005 (impostazione predefinita)

-> Salva.


10

Il modo più semplice per eseguire il debug dell'obiettivo Maven SOLO all'interno di IntelliJ è creare un obiettivo Maven regolare e nella scheda Runner passare quelle opzioni VM:

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

Dove 8000 è un numero di porta per il debug remoto.

Configurazione degli obiettivi di Maven

Quindi creare una nuova configurazione remota con la porta 8000. Eseguire questa configurazione dopo aver eseguito Maven goal.

Configurazione del debug remoto


8

Penso che la soluzione più semplice sia aggiungere temporaneamente il plug-in Maven come dipendenza. Fatto ciò, IntelliJ lo tratterà come qualsiasi altra dipendenza e potrai impostare i punti di interruzione nel solito modo.


1
dot this, e invece di mvn usa: mvnDebug ..., quindi crea un runner di debug remoto in intellij sulla porta 8000
user85155

3

Puoi fare riferimento alla risposta sopra o aggiungi questo plugin a 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>

Ed esegui l'obiettivo Maven con mvninvece di mvnDebug. Per esempiomvn spring-boot:run

In IDEA, aggiungi una configurazione remota. In Impostazioni, imposta Transport: Socket, Debugger Mode: Attach, Host: localhost, Port: 8000 (porta predefinita di mvnDebug).

Esegui come debug in IDEA, ogni volta che desideri eseguire il debug del codice.


3
La domanda non menzionava la primavera, questa risposta è specifica della primavera
Amalgovinus

1

Poiché stai lavorando con Intellij, c'è già un debugger integrato e non è necessario utilizzare necessariamente mvnDebug che è uno strumento da riga di comando. Dai un'occhiata a questo tutorial: Come eseguire il debug delle applicazioni Maven in Intellij IDEA .

Il tutorial utilizza il plug-in Maven Exec e consente di eseguire il debug dell'applicazione senza la necessità di utilizzare la riga di comando o MvnDebug. Il pensiero di condividerlo potrebbe essere utile qui.


2
Il tutorial copre solo il debug exec:java. Tuttavia, se è necessario fornire argomenti aggiuntivi per JVM, è necessario utilizzare exec:exec(vedere stackoverflow.com/questions/7305090/… ), che non può essere sottoposto a debug in questo modo.
mirelon

0

La risposta di @Peter Szanto funziona per me, ma non mi piace rovinare il mio codice sorgente.

E non posso far funzionare quel MvnDebugmodo.

Quindi provo in un altro modo, aggiungo il sorgente del plugin come modulo IDEA .

Ecco il passaggio dettagliato:

  1. Clona il sorgente del plugin come progetto indipendente.

  2. Nel tuo progetto, vai a File -> New -> Module from Exist Sourcese aggiungi il progetto plugin che cloni nel passaggio 1.

  3. Ora puoi aprire il codice sorgente del plugin e impostare un punto di interruzione.

  4. Esegui il tuo obiettivo Maven come modalità di debug, dovrebbe fermarsi al punto di interruzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.