วิธีแก้จุดบกพร่องเป้าหมาย maven ด้วยแนวคิด intellij?


101

คุณสามารถแก้จุดบกพร่องของเป้าหมายด้วย Intellij IDEA ได้หรือไม่? ฉันรู้ว่าฉันสามารถคลิกขวาและเรียกใช้Debugได้ อย่างไรก็ตามปลั๊กอิน maven ไม่ปรากฏในรายการExternal Libraries ของฉันดังนั้นฉันจึงไม่สามารถเข้าไปในโค้ดและตั้งค่าเบรกพอยต์ได้ ด้วยเหตุนี้การดีบั๊กจึงทำงานผ่านเป้าหมายโดยไม่หยุดเหมือนที่Runทำ

ฉันใช้ OS X 10.8 และ IDEA 12.0.2

แก้ไข: เป้าหมาย

ฉันได้เขียน specRunner ที่กำหนดเองสำหรับhttps://github.com/searls/jasmine-maven-plugin - อย่างไรก็ตาม $ specRunner ยังคงว่างเปล่า ก็เลยลองดูว่าจริงๆแล้วโหลดไฟล์ไหน


2
ดีบักเป้าหมาย maven ? สิ่งที่เป็นที่เป้าหมาย Maven ? คุณต้องการบรรลุอะไร แล้วปัญหาที่แท้จริงของคุณคืออะไร?
Alonso Dominguez

ด้วยเป้าหมาย maven ฉันหมายถึงจัสมิน: ทดสอบหรือจัสมิน: bdd เท่าที่ฉันเคยเห็น Mojo แต่ละตัวต้องใช้เมธอด execute () ซึ่งฉันต้องการดีบัก อย่างไรก็ตามเนื่องจากฉันไม่สามารถเข้าถึง jar จาก IDEA ฉันจึงไม่สามารถตั้งค่าเบรกพอยต์ได้
rweng

คำตอบ:


193

คิดออก:

  1. จากบรรทัดคำสั่งเรียกใช้เป้าหมาย maven ด้วยmvnDebugแทนmvn. เช่นmvnDebug clean
  2. เปิดแหล่งที่มาของปลั๊กอิน maven ที่คุณต้องการดีบักใน intelliJ และตั้งค่าจุดพัก
  3. ใน IDEA เพิ่มการRemoteกำหนดค่า
    1. ภายใต้การตั้งค่าตั้งค่าการขนส่ง: ซ็อกเก็ตโหมดดีบักเกอร์: แนบโฮสต์: localhost พอร์ต: 8000 (พอร์ตเริ่มต้นของ mvnDebug)
  4. เรียกใช้การกำหนดค่าในโหมดดีบัก ควรเชื่อมต่อกับ mvnDebug jvm ที่รออยู่

2
คุณเปิดซอร์สของปลั๊กอิน maven ใน Intellij ได้อย่างไร
CorayThan

ฉันคิดว่าฉันโคลนจาก github ในเวอร์ชันที่ถูกต้อง ส่วนที่เหลือเกิดขึ้นโดยอัตโนมัติ
rweng

3
จะเกิดอะไรขึ้นถ้าฉันต้องการเรียกใช้การทดสอบโดยใช้mvn test -Dtest=com.example.MyTest(กรณีทดสอบของฉันล้มเหลวเฉพาะเมื่อรันโดยใช้ maven) - เบรกพอยต์ IDEA จะถูกละเว้นในกรณีนี้ดูเหมือนว่า ... :(
RobertG

2
พบมัน: ในstackoverflow.com/q/6573289/1143126โดยพื้นฐานแล้วคำถามนี้ถาม
RobertG

โดยเฉพาะอย่างยิ่งนี่คือวิธีการดีบักเป้าหมาย maven ด้วย surefire: stackoverflow.com/a/8339155/929708
JJ Brown

41

ง่ายมาก. ฉันใช้ Intellj Idea 15.0.4

  1. ตั้งค่าจุดพักในปลั๊กอิน maven ของคุณ
  2. ในแท็ก "Maven Projects" ไปที่ project witch กำลังใช้ปลั๊กอิน maven ของคุณ
  3. ใน "ปลั๊กอิน" ค้นหาปลั๊กอินของคุณและคลิกขวาที่เป้าหมายและแก้ไขข้อบกพร่อง

นี่คือภาพหน้าจอ:

ภาพหน้าจอ


1
แม้ว่าคำตอบนี้จะมีคะแนนติดลบ แต่ก็ช่วยฉันแก้ไขปัญหาที่ฉันมีได้ (วิธีดีบักโปรเจ็กต์ที่ใช้ maven ใน IntelliJ) และเมื่อ "Googling" ปัญหาก็นำฉันไปที่หน้านี้
gbmhunter

ขอบคุณครับคำตอบของคุณช่วยให้ฉันคิดวิธีใช้ปลั๊กอิน maven โดยอัตโนมัติในระหว่างการทำงานในความคิด
Anatoly Yakimchuk

นี่เป็นคำตอบที่ดีมาก สำหรับฉันแล้วมันง่ายกว่าและง่ายกว่าที่จะทำด้วยวิธีนี้มากกว่าการตั้งค่าการดีบักระยะไกล (ตามที่แนะนำในคำตอบที่ยอมรับ) ไม่แน่ใจว่าทำไมอีกคนถึงได้รับการยอมรับ บางทีมันอาจจะใช้ไม่ได้กับสถานการณ์ที่อธิบายไว้ในคำถาม แต่ถ้าได้ผลสำหรับฉันอย่างแน่นอนขอบคุณมาก!
Chanandler Bong

2
"ตั้งค่าจุดพักในปลั๊กอิน maven ของคุณ" ฉันไม่แน่ใจว่าจริง ๆ แล้วหมายถึงอะไร? แตกต่างจากการใส่เบรกพอยต์ในคลาส java หรือไม่?
Amalgovinus

"ตั้งค่าเบรกพอยต์ในปลั๊กอิน maven ของคุณ" หมายถึงวางเบรกพอยต์ในคลาสปลั๊กอิน maven ของคุณ
gorums

17

คำถามเก่า แต่ฉันก็มีความต้องการแบบเดียวกันและต้องใช้เวลาสักพักกว่าจะได้ผล หวังว่าจะช่วยใครได้บ้าง

สำหรับการทดสอบการดีบักใช้:

mvn <goal> -Dmaven.surefire.debug 

หรือ

mvn <goal> -Dmaven.failsafe.debug

เมื่อการดำเนินการหยุดลงและฟังซ็อกเก็ตที่อยู่ 5005 (ค่าเริ่มต้น) คุณจะเรียกใช้ตัวดีบักระยะไกลที่กำหนดค่าไว้

วิธีกำหนดค่า:

เรียกใช้ -> แก้ไขการกำหนดค่า -> การขนส่งระยะไกล: โหมดซ็อกเก็ตดีบักเกอร์: แนบพอร์ต: 5005 (ค่าเริ่มต้น)

-> บันทึก


10

ฉันคิดว่าวิธีแก้ปัญหาที่ง่ายที่สุดคือการเพิ่มปลั๊กอิน maven เป็นการพึ่งพาชั่วคราว เมื่อเสร็จแล้ว IntelliJ จะปฏิบัติเช่นเดียวกับการพึ่งพาอื่น ๆ และคุณสามารถตั้งค่าเบรกพอยต์ได้ตามปกติ


2
จุดนี้และแทนที่จะใช้ mvn ใช้: mvnDebug ... จากนั้นสร้างตัวดำเนินการดีบักระยะไกลใน intellij บนพอร์ต 8000
user85155

1,000 เท่า! ฉันพยายามดีบักปลั๊กอินของบุคคลที่สามและเพิ่มเป็นการพึ่งพา Maven ตามปกติหมายความว่าฉันสามารถดาวน์โหลดซอร์สโค้ดค้นหาคลาสที่ฉันรู้ว่ามีปัญหาได้อย่างง่ายดาย (ตามการเปลี่ยนแปลง Github) และตั้งค่าจุดพัก คลิกขวาที่เป้าหมาย Maven ที่ต้องการและเลือก 'Debug' ตามที่คนอื่น ๆ กล่าวถึงทำงานได้อย่างสมบูรณ์
Patrick Herrera

10

วิธีที่ง่ายที่สุดในการดีบักเป้าหมาย maven ภายใน IntelliJ เท่านั้นคือการสร้างเป้าหมาย maven ปกติและในแท็บ runner จะผ่านตัวเลือก VM เหล่านั้น:

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

โดยที่ 8000 คือหมายเลขพอร์ตสำหรับการดีบักระยะไกล

การกำหนดค่าเป้าหมาย Maven

จากนั้นสร้างการกำหนดค่าระยะไกลใหม่ด้วยพอร์ต 8000 เรียกใช้การกำหนดค่านี้หลังจากเรียกใช้เป้าหมาย maven

การกำหนดค่าการดีบักระยะไกล


3

คุณสามารถอ้างถึงคำตอบข้างต้นหรือเพียงแค่เพิ่มปลั๊กอินนี้ใน 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>

และเรียกใช้ Maven เป้าหมายกับแทนmvn mvnDebugเช่นmvn spring-boot:run

ใน IDEA ให้เพิ่มการกำหนดค่าระยะไกล ภายใต้การตั้งค่าตั้งค่าการขนส่ง: ซ็อกเก็ตโหมดดีบักเกอร์: แนบโฮสต์: localhost พอร์ต: 8000 (พอร์ตเริ่มต้นของ mvnDebug)

เรียกใช้เป็น Debug ใน IDEA เมื่อใดก็ตามที่คุณต้องการดีบักโค้ด


3
คำถามไม่ได้กล่าวถึงฤดูใบไม้ผลิคำตอบนี้คือเฉพาะฤดูใบไม้ผลิ
Amalgovinus

1

เนื่องจากคุณกำลังทำงานกับ Intellij จึงมีดีบักเกอร์ในตัวอยู่แล้วและคุณไม่จำเป็นต้องใช้ mvnDebug ซึ่งเป็นเครื่องมือบรรทัดคำสั่งเสมอไป ตรวจสอบการกวดวิชานี้: วิธีการ Debug โปรแกรม Maven ในความคิด

บทช่วยสอนใช้ปลั๊กอิน Maven Exec และช่วยให้คุณดีบักแอปพลิเคชันโดยไม่จำเป็นต้องใช้บรรทัดคำสั่งหรือMvnDebug. การแบ่งปันความคิดมันอาจมีค่าที่นี่


2
บทช่วยสอนนี้ครอบคลุมเฉพาะการดีบักexec:javaเท่านั้น อย่างไรก็ตามหากคุณต้องการระบุอาร์กิวเมนต์เพิ่มเติมสำหรับ JVM คุณต้องใช้exec:exec(ดูstackoverflow.com/questions/7305090/… ) ซึ่งไม่สามารถดีบักด้วยวิธีนั้นได้
mirelon

1

คำตอบของ @Peter Szanto ใช้ได้กับฉัน แต่ฉันไม่ชอบยุ่งกับซอร์สโค้ดของฉัน

และฉันไม่สามารถทำแบบนั้นMvnDebugได้

ดังนั้นผมจึงลองวิธีอื่นเพิ่มแหล่งปลั๊กอินเป็นโมดูล IDEA

นี่คือขั้นตอนรายละเอียด:

  1. โคลนซอร์สปลั๊กอินเป็นโปรเจ็กต์อิสระ

  2. ในโปรเจ็กต์ของคุณไปที่File -> New -> Module from Exist Sourcesและเพิ่มโปรเจ็กต์ปลั๊กอินที่คุณโคลนในขั้นตอนที่ 1

  3. ตอนนี้คุณสามารถเปิดซอร์สโค้ดปลั๊กอินและกำหนดจุดพักได้

  4. เรียกใช้เป้าหมาย maven ของคุณเป็นโหมดดีบักควรหยุดที่จุดพัก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.