Làm thế nào để gỡ lỗi mục tiêu maven với ý tưởng intellij?


99

Bạn có thể gỡ lỗi mục tiêu maven với Intellij IDEA không? Tôi biết rằng tôi có thể nhấp chuột phải và chạy Debug . Tuy nhiên, plugin maven không xuất hiện trong danh sách Thư viện bên ngoài của tôi , vì vậy tôi không thể truy cập mã và đặt điểm ngắt. Do đó, Debug chạy qua các mục tiêu mà không dừng lại, giống như Run .

Tôi đang sử dụng OS X 10.8 và IDEA 12.0.2.

CHỈNH SỬA: Mục tiêu

Tôi đã viết specRunner tùy chỉnh cho https://github.com/searls/jasmine-maven-plugin - Tuy nhiên, $ specs $ vẫn trống. Vì vậy, tôi cố gắng xem tệp nào thực sự được tải.


2
gỡ lỗi mục tiêu maven ? mục tiêu maven đó là gì? Bạn muốn đạt được những gì? và vấn đề thực tế của bạn là gì?
Alonso Dominguez

Với mục tiêu maven, tôi muốn nói đến hoa nhài: thử nghiệm, hoặc hoa nhài: bdd. Theo như tôi đã thấy, mỗi Mojo phải triển khai một phương thức execute () mà tôi muốn gỡ lỗi. Tuy nhiên, vì tôi không có quyền truy cập vào jar từ IDEA, tôi không thể đặt điểm ngắt.
rweng

Câu trả lời:


190

Tìm ra:

  1. từ dòng lệnh, chạy mục tiêu maven với mvnDebugthay vì mvn. Ví dụmvnDebug clean
  2. Mở nguồn của plugin maven mà bạn muốn gỡ lỗi trong intelliJ và đặt breakPoint
  3. Trong IDEA, hãy thêm một Remotecấu hình.
    1. Trong Cài đặt, đặt Giao thông: Socket, Chế độ gỡ lỗi: Đính kèm, Máy chủ: localhost, Cổng: 8000 (cổng mặc định của mvnDebug).
  4. Chạy Cấu hình ở chế độ Gỡ lỗi. Nó sẽ kết nối với jvm mvnDebug đang chờ.

2
Làm cách nào để bạn mở mã nguồn của plugin maven trong Intellij?
CorayThan

Tôi nghĩ rằng tôi đã sao chép nó từ github trong phiên bản chính xác. Phần còn lại diễn ra tự động.
rweng

3
Nếu tôi muốn chạy thử nghiệm sử dụng mvn test -Dtest=com.example.MyTest(trường hợp thử nghiệm của tôi chỉ thất bại khi chạy sử dụng maven) - breakpoint IDEA được bỏ qua trong trường hợp này, có vẻ như ... :(
RobertG

2
Đã tìm thấy nó: Trong stackoverflow.com/q/6573289/1143126 , về cơ bản đây là câu hỏi của
q Kiệt

Cụ thể, đây là cách gỡ lỗi mục tiêu maven với surefire: stackoverflow.com/a/8339155/929708
JJ Brown

40

Rất dễ. Tôi đang sử dụng Intellj Idea 15.0.4

  1. Đặt điểm ngắt trong plugin maven của bạn
  2. Trong thẻ "Maven Projects", chuyển đến dự án phù thủy đang sử dụng plugin maven của bạn.
  3. Trong "Plugin", tìm plugin của bạn và nhấp chuột phải vào mục tiêu và gỡ lỗi

Đây là ảnh chụp màn hình:

ảnh chụp màn hình


1
Mặc dù câu trả lời này có điểm tiêu cực, nhưng nó đã giúp tôi khắc phục sự cố mà tôi gặp phải (cách gỡ lỗi một dự án dựa trên maven trong IntelliJ) và khi "Googling", vấn đề đó đã dẫn tôi đến trang này.
gbmhunter

Cảm ơn bạn thưa ông, câu trả lời của bạn giúp tôi với con số cách sử dụng plugin maven tự động trong quá trình chạy trong ý tưởng
Anatoly Yakimchuk

Đây thực sự là một câu trả lời rất tốt. Đối với tôi, thực hiện theo cách này chắc chắn dễ dàng và đơn giản hơn là thiết lập gỡ lỗi từ xa (như được đề xuất trong câu trả lời được chấp nhận). Không chắc tại sao cái kia được chấp nhận. Có lẽ nó sẽ không hiệu quả với tình huống được mô tả trong câu hỏi, nhưng nếu chắc chắn hiệu quả với tôi, vì vậy cảm ơn!
Chanandler Bong

2
"Đặt điểm ngắt trong plugin maven của bạn" Tôi không chắc điều đó thực sự có nghĩa là gì? Điều đó có khác với việc đặt một điểm ngắt trong chính lớp java không?
Amalgovinus

"Đặt điểm ngắt trong plugin maven của bạn" có nghĩa là đặt điểm ngắt trong lớp plugin maven của bạn
gorums

17

Câu hỏi cũ, nhưng tôi cũng có nhu cầu tương tự và tôi phải mất một thời gian mới làm được. Hi vọng có thể giúp được ai đó.

Để sử dụng gỡ lỗi thử nghiệm:

mvn <goal> -Dmaven.surefire.debug 

hoặc là

mvn <goal> -Dmaven.failsafe.debug

Khi quá trình thực thi dừng và lắng nghe ổ cắm ở địa chỉ 5005 (mặc định), bạn chạy trình gỡ lỗi từ xa đã định cấu hình của mình.

Cách cấu hình nó:

Chạy -> Chỉnh sửa cấu hình -> Truyền tải từ xa: socket Chế độ gỡ lỗi: Đính kèm Cổng: 5005 (mặc định)

-> Lưu.


10

Cách dễ nhất để gỡ lỗi mục tiêu maven CHỈ trong IntelliJ là tạo mục tiêu maven thông thường và trong tab Á hậu chuyển các tùy chọn máy ảo đó:

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

Trong đó 8000 là số cổng để gỡ lỗi từ xa.

Cấu hình mục tiêu Maven

Sau đó tạo cấu hình từ xa mới với cổng 8000. Chạy cấu hình này sau khi chạy mục tiêu maven.

Cấu hình gỡ lỗi từ xa


8

Tôi nghĩ giải pháp đơn giản nhất là tạm thời thêm plugin maven làm phụ thuộc. Khi điều này được thực hiện, IntelliJ sẽ xử lý điều này giống như bất kỳ phụ thuộc nào khác và bạn có thể đặt các điểm ngắt theo cách thông thường.


1
chấm này, và thay vào đó sử dụng mvn: mvnDebug ..., sau đó tạo ra một Á hậu debug từ xa trong IntelliJ trên cổng 8000
user85155

3

Hoặc Bạn có thể tham khảo câu trả lời ở trên Hoặc chỉ cần thêm plugin này vào 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>

Và chạy mục tiêu maven với mvnthay vì mvnDebug. Ví dụmvn spring-boot:run

Trong IDEA, thêm Cấu hình từ xa. Trong Cài đặt, đặt Giao thông: Socket, Chế độ gỡ lỗi: Đính kèm, Máy chủ: localhost, Cổng: 8000 (cổng mặc định của mvnDebug).

Chạy dưới dạng Gỡ lỗi trong IDEA, bất cứ khi nào bạn muốn gỡ lỗi mã.


3
Câu hỏi không đề cập đến mùa xuân, câu trả lời này là dành riêng cho mùa xuân
Amalgovinus

1

Vì bạn đang làm việc với Intellij, nên đã có một trình gỡ lỗi tích hợp sẵn ở đó và bạn không nhất thiết phải sử dụng mvnDebug, một công cụ dòng lệnh. Xem hướng dẫn này: Cách gỡ lỗi ứng dụng Maven trong Intellij IDEA .

Hướng dẫn sử dụng Plugin Maven Exec và cho phép bạn gỡ lỗi ứng dụng mà không cần sử dụng dòng lệnh hoặc MvnDebug. Suy nghĩ chia sẻ nó có thể có giá trị ở đây.


2
Hướng dẫn chỉ bao gồm gỡ lỗi exec:java. Tuy nhiên, nếu bạn cần cung cấp các đối số bổ sung cho JVM, bạn cần sử dụng exec:exec(Xem stackoverflow.com/questions/7305090/… ), không thể gỡ lỗi theo cách đó.
mirelon

0

Câu trả lời của @Peter Szanto phù hợp với tôi, nhưng tôi không thích làm rối mã nguồn của mình.

Và tôi không thể làm cho những MvnDebugcách đó hoạt động.

Vì vậy, tôi thử một cách khác, thêm nguồn plugin làm mô-đun IDEA .

Đây là bước chi tiết:

  1. Sao chép nguồn plugin như một dự án độc lập.

  2. Trong dự án của bạn, hãy truy cập File -> New -> Module from Exist Sourcesvà thêm dự án plugin mà bạn sao chép ở bước 1.

  3. Bây giờ bạn có thể mở mã nguồn plugin và đặt một số điểm ngắt.

  4. Chạy mục tiêu maven của bạn dưới dạng chế độ gỡ lỗi, nó sẽ dừng lại ở điểm ngắt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.