Bagaimana cara men-debug tujuan maven dengan ide intellij?

100

Dapatkah Anda men-debug tujuan yang hebat dengan Intellij IDEA? Saya tahu bahwa saya dapat mengklik kanan dan menjalankan Debug . Namun, plugin maven tidak muncul di daftar Perpustakaan Eksternal saya , jadi saya tidak bisa masuk ke kode dan menetapkan titik putus. Jadi, Debug berjalan melalui tujuan tanpa henti, seperti yang dilakukan Run .

Saya menggunakan OS X 10.8 dan IDEA 12.0.2.

EDIT: Sasaran

Saya telah menulis specRunner khusus untuk https://github.com/searls/jasmine-maven-plugin - Namun, $ specs $ tetap kosong. Jadi saya mencoba melihat file mana yang benar-benar dimuat.

rweng
sumber
2
debug tujuan maven ? apa tujuan maven itu ? apa yang ingin kamu capai? dan apa masalahmu yang sebenarnya?
Alonso Dominguez
Dengan tujuan maven maksud saya melati: tes, atau melati: bdd. Sejauh yang saya lihat, setiap Mojo harus mengimplementasikan metode execute () yang ingin saya debug. Namun, karena saya tidak memiliki akses ke stoples dari IDEA, saya tidak dapat menetapkan titik putus.
rweng

Jawaban:

190

Menemukannya:

  1. dari baris perintah, jalankan tujuan maven dengan mvnDebugalih - alih mvn. MisalnyamvnDebug clean
  2. Buka sumber plugin maven yang ingin Anda debug di intelliJ dan setel breakPoint
  3. Di IDEA, tambahkan RemoteKonfigurasi.
    1. Di bawah Pengaturan, atur Transport: Socket, Debugger Mode: Attach, Host: localhost, Port: 8000 (port default mvnDebug).
  4. Jalankan Konfigurasi dalam mode Debug. Ini harus terhubung ke mvnDebug jvm menunggu.
rweng
sumber
2
Bagaimana Anda membuka sumber plugin maven di Intellij?
CorayThan
Saya rasa saya mengkloningnya dari github dalam versi yang benar. Sisanya terjadi secara otomatis.
rweng
3
Bagaimana jika saya ingin menjalankan tes menggunakan mvn test -Dtest=com.example.MyTest(kasus pengujian saya gagal hanya ketika dijalankan menggunakan maven) - breakpoint IDEA diabaikan dalam kasus ini, tampaknya ... :(
RobertG
2
Ditemukan: Di stackoverflow.com/q/6573289/1143126 , ini pada dasarnya pertanyaan yang ditanyakan
RobertG
Secara khusus, berikut adalah cara men-debug tujuan maven dengan pasti: stackoverflow.com/a/8339155/929708
JJ Brown
40

Sangat mudah. Saya menggunakan Intellj Idea 15.0.4

  1. Setel breakpoint di plugin maven Anda
  2. Dalam tag "Proyek Maven", masuk ke proyek penyihir menggunakan plugin maven Anda.
  3. Di "Plugins" temukan plugin Anda dan di atas sasaran klik kanan dan Debug

Ini tangkapan layarnya:

tangkapan layar

gorum
sumber
1
Meskipun jawaban ini memiliki skor negatif, itu membantu saya memperbaiki masalah yang saya alami (cara men-debug proyek berbasis maven di IntelliJ), dan saat "Googling" masalah itu membawa saya ke halaman ini.
gbmhunter
Terima kasih Pak, jawaban Anda membantu saya untuk mengetahui cara menggunakan plugin maven secara otomatis selama menjalankan ide
Anatoly Yakimchuk
Ini sebenarnya jawaban yang sangat bagus. Bagi saya itu pasti lebih mudah dan lebih sederhana untuk melakukannya dengan cara ini daripada mengatur debug jarak jauh (seperti yang disarankan dalam jawaban yang diterima). Tidak yakin mengapa yang lainnya diterima. Mungkin itu tidak akan berhasil untuk situasi yang dijelaskan dalam pertanyaan, tetapi jika pasti berhasil untuk saya, jadi terima kasih!
Chanandler Bong
2
"Set breakpoint di plugin maven Anda" Saya tidak yakin apa artinya sebenarnya? Apakah itu berbeda dengan meletakkan breakpoint di kelas java itu sendiri?
Amalgovinus
"Setel breakpoint di plugin maven Anda" berarti letakkan breakpoint di kelas plugin maven Anda
gorums
17

Pertanyaan lama, tetapi saya memiliki kebutuhan yang sama dan butuh beberapa saat untuk membuatnya berfungsi. Semoga bisa membantu seseorang.

Untuk uji debugging, gunakan:

mvn <goal> -Dmaven.surefire.debug 

atau

mvn <goal> -Dmaven.failsafe.debug

Ketika eksekusi berhenti dan mendengarkan soket di alamat 5005 (default) Anda menjalankan debugger jarak jauh yang dikonfigurasi.

Cara mengkonfigurasinya:

Jalankan -> Edit konfigurasi -> Transportasi Jarak Jauh: mode Debugger soket: Pasang Port: 5005 (default)

-> Simpan.

vilkg
sumber
10

Cara termudah untuk men-debug tujuan maven HANYA dalam IntelliJ adalah dengan membuat tujuan maven biasa dan di tab runner meneruskan opsi VM tersebut:

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

Dimana 8000 adalah nomor port untuk debugging jarak jauh.

Konfigurasi gol Maven

Kemudian buat konfigurasi Remote baru dengan port 8000. Jalankan konfigurasi ini setelah menjalankan tujuan maven.

Konfigurasi debugging jarak jauh

Michał Stochmal
sumber
8

Menurut saya solusi termudah adalah dengan menambahkan plugin maven sebagai dependensi. Setelah ini selesai, IntelliJ akan memperlakukan ini seperti dependensi lainnya dan Anda dapat menyetel breakpoint seperti biasa.

Peter Szanto
sumber
1
tandai ini, dan alih-alih mvn gunakan: mvnDebug ..., lalu buat runner debug jarak jauh di intellij pada port 8000
user85155
3

Entah Anda bisa merujuk ke jawaban di atas Atau cukup tambahkan plugin ini ke 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>

Dan menjalankan gol maven dengan mvnbukannya mvnDebug. Misalnyamvn spring-boot:run

Di IDEA, tambahkan Konfigurasi Jarak Jauh. Di bawah Pengaturan, atur Transport: Socket, Debugger Mode: Attach, Host: localhost, Port: 8000 (port default mvnDebug).

Jalankan sebagai Debug di IDEA, kapan pun Anda ingin men-debug kode.

abhishek ringsia
sumber
3
Pertanyaannya tidak menyebutkan Musim Semi, jawaban ini khusus Musim Semi
Amalgovinus
1

Karena Anda bekerja dengan Intellij, sudah ada debugger bawaan di sana dan Anda tidak perlu menggunakan mvnDebug yang merupakan alat baris perintah. Simak tutorial ini: Cara Men-debug Aplikasi Maven di Intellij IDEA .

Tutorial ini menggunakan Plugin Maven Exec dan memungkinkan Anda men-debug aplikasi tanpa perlu menggunakan baris perintah atau MvnDebug. Berpikir bahwa berbagi mungkin bermanfaat di sini.

ambodi
sumber
2
Tutorial hanya mencakup debugging exec:java. Namun, jika Anda perlu memberikan argumen tambahan untuk JVM, Anda perlu menggunakan exec:exec(Lihat stackoverflow.com/questions/7305090/… ), yang tidak dapat di-debug dengan cara itu.
mirelon
0

Jawaban @Peter Szanto berhasil untuk saya, tetapi saya tidak suka mengacaukan kode sumber saya.

Dan saya tidak bisa membuat MvnDebugcara itu berhasil.

Jadi saya mencoba cara lain, menambahkan sumber plugin sebagai modul IDEA .

Berikut langkah detailnya:

  1. Gandakan sumber plugin sebagai proyek independen.

  2. Dalam proyek Anda, buka File -> New -> Module from Exist Sourcesdan tambahkan proyek plugin yang Anda kloning pada langkah 1.

  3. Sekarang Anda dapat membuka kode sumber plugin dan mengatur beberapa break point.

  4. Jalankan tujuan maven Anda sebagai mode debug, itu harus berhenti di break point.

pengguna1686407
sumber