İntellij fikri ile bir maven hedefinde nasıl hata ayıklanır?


101

Intellij IDEA ile bir maven hedefinde hata ayıklayabilir misiniz? Sağ tıklayıp Debug'ı çalıştırabileceğimi biliyorum . Ancak, maven eklentisi Harici Kitaplıklar listemde görünmüyor , bu nedenle koda girip bir kesme noktası ayarlayamıyorum. Böylece, Debug , Run'ın yaptığı gibi durmadan hedeflerin üzerinden geçer .

OS X 10.8 ve IDEA 12.0.2 kullanıyorum.

DÜZENLE: Hedef

Ben için özel specRunner yazdım https://github.com/searls/jasmine-maven-plugin - Ancak, $ gözlük $ kalır boşaltın. Bu yüzden hangi dosyaların gerçekten yüklendiğini görmeye çalışıyorum.


2
bir maven hedefinde hata ayıklamak ? bu maven hedefi nedir? ne elde etmek istiyorsun ve asıl sorunun nedir?
Alonso Dominguez

Maven hedefi ile yasemin demek istiyorum: test veya yasemin: bdd. Gördüğüm kadarıyla, her Mojo'nun hata ayıklamak istediğim bir execute () yöntemi uygulaması gerekiyor. Ancak, IDEA'dan kavanozlara erişimim olmadığından, bir kesme noktası ayarlayamıyorum.
rweng

Yanıtlar:


192

Anladım:

  1. komut satırından mvnDebugyerine maven hedefini çalıştırın mvn. ÖrneğinmvnDebug clean
  2. IntelliJ'de hata ayıklamak istediğiniz maven eklentisinin kaynağını açın ve bir breakPoint ayarlayın
  3. IDEA'da bir RemoteYapılandırma ekleyin .
    1. Ayarlar altında, Aktarım: Soket, Hata Ayıklayıcı Modu: Ekle, Ana Bilgisayar: localhost, Bağlantı Noktası: 8000 (mvnDebug varsayılan bağlantı noktası) olarak ayarlayın.
  4. Yapılandırmayı Hata Ayıklama modunda çalıştırın. Bekleyen mvnDebug jvm'ye bağlanmalıdır.

2
Intellij'de maven eklentisinin kaynağını nasıl açarsınız?
CorayThan

Sanırım onu ​​github'dan doğru sürümde klonladım. Gerisi otomatik olarak gerçekleşti.
rweng

3
Ya testleri çalıştırmak istersem mvn test -Dtest=com.example.MyTest(test durumum yalnızca maven kullanarak çalıştırıldığında başarısız olur) - bu durumda IDEA kesme noktaları yok sayılır, öyle görünüyor ... :(
RobertG

2
Buldum: stackoverflow.com/q/6573289/1143126'da , bu temelde sorulan soru
RobertG

Özellikle, emin ateşle bir maven hedefinde nasıl hata ayıklayacağınız aşağıda açıklanmıştır: stackoverflow.com/a/8339155/929708
JJ Brown

40

Çok kolay. Intellj Idea 15.0.4 kullanıyorum

  1. Maven eklentinizde kesme noktasını ayarlayın
  2. "Maven Projects" etiketinde, maven eklentinizi kullanan cadı projesine gidin.
  3. "Eklentiler" bölümünde eklentinizi bulun ve hedefin üzerinde sağ tıklayın ve Hata Ayıklayın

İşte bir ekran görüntüsü:

ekran görüntüsü


1
Bu cevabın puanı negatif olmasına rağmen, sahip olduğum sorunu düzeltmeme yardımcı oldu (IntelliJ'de maven tabanlı bir projede nasıl hata ayıklanır) ve sorun "Googling" olduğunda beni bu sayfaya yönlendirdi.
gbmhunter

Teşekkür ederim efendim, cevabınız fikir çalıştırma sırasında maven eklentilerini otomatik olarak nasıl kullanacağımı anlamama yardımcı oldu
Anatoly Yakimchuk

Bu aslında çok iyi bir cevap. Benim için bunu bu şekilde yapmak, uzaktan hata ayıklama kurmaktan (kabul edilen yanıtta önerildiği gibi) kesinlikle daha kolay ve daha basit. Diğerinin neden kabul edildiğinden emin değilim. Belki soruda açıklanan durum için işe yaramazdı, ama kesinlikle benim için işe yaradıysa, çok teşekkürler!
Chanandler Bong

2
"Maven eklentinizde kesme noktasını ayarlayın" Bunun gerçekte ne anlama geldiğinden emin değilim? Bu, java sınıfının kendisine bir kesme noktası koymaktan farklı mı?
Amalgovinus

"Maven eklentinizde kesme noktasını ayarlayın", kesme noktasını maven eklenti sınıfınıza koymak anlamına gelir
gorums

17

Eski soru, ama ben de aynı ihtiyacım vardı ve işe koymam biraz zaman aldı. Umarım birine yardım edebilir.

Test hata ayıklaması için şunları kullanın:

mvn <goal> -Dmaven.surefire.debug 

veya

mvn <goal> -Dmaven.failsafe.debug

Yürütme durduğunda ve 5005 adresindeki (varsayılan) soketi dinlediğinde, yapılandırılmış uzaktan hata ayıklayıcınızı çalıştırırsınız.

Nasıl yapılandırılır:

Çalıştır -> Yapılandırmaları düzenle -> Uzak Aktarım: soket Hata Ayıklayıcı modu: Bağlantı Noktası Ekle: 5005 (varsayılan)

-> Kaydet.


10

Bence en kolay çözüm, maven eklentisini geçici olarak bağımlılık olarak eklemek. Bu yapıldıktan sonra, IntelliJ bunu diğer bağımlılıklar gibi ele alır ve kesme noktalarını normal şekilde ayarlayabilirsiniz.


2
bunu nokta ve mvn yerine: mvnDebug ..., sonra 8000 numaralı bağlantı noktasında intellij'de bir uzaktan hata ayıklama çalıştırıcısı oluşturun
user85155

Bunun 1000 katı! Üçüncü taraf bir eklentide hata ayıklamaya ve onu normal bir Maven bağımlılığı olarak eklemeye çalışıyordum, kaynak kodunu kolayca indirebileceğim, sorunu olduğunu bildiğim sınıfı arayabileceğim (Github değişiklik günlüğüne göre) ve bir kesme noktası ayarlayabileceğim anlamına geliyordu. İstenen Maven hedefine sağ tıklayıp diğerlerinin de belirttiği gibi 'Hata Ayıkla'yı seçmek mükemmel bir şekilde çalıştı
Patrick Herrera

10

YALNIZCA IntelliJ'de maven hedefinde hata ayıklamanın en kolay yolu, normal bir maven hedefi oluşturmak ve koşucu sekmesinde şu VM seçeneklerini geçmektir:

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

8000, uzaktan hata ayıklama için bir bağlantı noktası numarasıdır.

Maven hedef yapılandırması

Ardından, 8000 numaralı bağlantı noktasıyla yeni Uzak yapılandırma oluşturun. Bu yapılandırmayı maven hedefini çalıştırdıktan sonra çalıştırın.

Uzaktan hata ayıklama yapılandırması


3

Ya yukarıdaki cevaba bakabilirsiniz ya da bu eklentiyi pom.xml'e ekleyin.

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

Ve mvnyerine maven hedefini çalıştırın mvnDebug. Örneğinmvn spring-boot:run

IDEA'da bir Uzaktan Yapılandırma ekleyin. Ayarlar altında, Aktarım: Soket, Hata Ayıklayıcı Modu: Ekle, Ana Bilgisayar: localhost, Bağlantı Noktası: 8000 (mvnDebug varsayılan bağlantı noktası) olarak ayarlayın.

Kodda hata ayıklamak istediğinizde IDEA'da Hata Ayıklama olarak çalıştırın.


3
Soru İlkbahardan bahsetmedi, bu cevap Bahara özgü
Amalgovinus

1

Intellij ile çalıştığınız için, orada zaten yerleşik bir hata ayıklayıcı var ve bir komut satırı aracı olan mvnDebug'ı kullanmanız gerekmiyor. Bu eğiticiye göz atın: Intellij IDEA'da Maven Uygulamalarında Hata Ayıklama .

Öğretici, Maven Exec Eklentisini kullanır ve komut satırını veya MvnDebug. Paylaşmanın burada değerli olabileceğini düşündüm.


2
Öğretici yalnızca hata ayıklamayı kapsar exec:java. Ancak, JVM için ek bağımsız değişkenler sağlamanız gerekiyorsa , bu şekilde hata ayıklanamayan exec:exec(Bkz. Stackoverflow.com/questions/7305090/… ) kullanmanız gerekir .
mirelon

0

@Peter Szanto'nun cevabı benim için işe yarıyor, ancak kaynak kodumu karıştırmayı sevmiyorum.

Ve bu MvnDebugyolu çalıştıramam.

Bu yüzden başka bir yol deniyorum, eklenti kaynağını IDEA modülü olarak ekledim .

İşte detay adımı:

  1. Eklenti kaynağını bağımsız bir proje olarak klonlayın.

  2. Projenizde, File -> New -> Module from Exist Sources1. adımda klonladığınız eklenti projesine gidin ve ekleyin.

  3. Artık eklenti kaynak kodunu açabilir ve bir kırılma noktası ayarlayabilirsiniz.

  4. Maven hedefinizi hata ayıklama modu olarak çalıştırın, kırılma noktasında durmalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.