intellij 아이디어로 Maven 목표를 디버깅하는 방법은 무엇입니까?


100

Intellij IDEA로 Maven 목표를 디버깅 할 수 있습니까? 마우스 오른쪽 버튼을 클릭하고 Debug를 실행할 수 있다는 것을 알고 있습니다 . 그러나 Maven 플러그인은 내 외부 라이브러리 목록에 나타나지 않으므로 코드로 이동하여 중단 점을 설정할 수 없습니다. 따라서 디버그Run 처럼 멈추지 않고 목표를 통해 실행됩니다 .

OS X 10.8 및 IDEA 12.0.2를 사용하고 있습니다.

수정 : 목표

https://github.com/searls/jasmine-maven-plugin에 대한 사용자 지정 specRunner를 작성했습니다. 그러나 $ specs $는 비어 있습니다. 그래서 어떤 파일이 실제로로드되는지 확인하려고합니다.


2
maven 목표를 디버그 하시겠습니까? 그 메이븐 목표 는 무엇 입니까? 무엇을 성취하고 싶습니까? 그리고 실제 문제는 무엇입니까?
Alonso Dominguez 2013 년

maven 목표는 jasmine : test 또는 jasmine : bdd를 의미합니다. 내가 본 한, 각 Mojo는 디버그하고 싶은 execute () 메소드를 구현해야합니다. 그러나 IDEA에서 jar에 액세스 할 수 없기 때문에 중단 점을 설정할 수 없습니다.
rweng

답변:


190

그것을 알아 냈습니다.

  1. 명령 줄에서 mvnDebug대신 maven goal을 실행하십시오.mvn . 예mvnDebug clean
  2. intelliJ에서 디버깅하려는 Maven 플러그인의 소스를 열고 중단 점을 설정합니다.
  3. IDEA에서 Remote 구성을 .
    1. 설정에서 전송 : 소켓, 디버거 모드 : 연결, 호스트 : localhost, 포트 : 8000 (mvnDebug의 기본 포트)을 설정합니다.
  4. 디버그 모드에서 구성을 실행하십시오. 대기중인 mvnDebug jvm에 연결해야합니다.

2
Intellij에서 Maven 플러그인의 소스를 어떻게 열 수 있습니까?
CorayThan

github에서 올바른 버전으로 복제했다고 생각합니다. 나머지는 자동으로 이루어졌습니다.
rweng

3
테스트를 실행하려면 어떻게해야하나요? mvn test -Dtest=com.example.MyTest(내 테스트 케이스는 maven을 사용하여 실행할 때만 실패합니다)-이 경우 IDEA 중단 점은 무시됩니다 ... :(
RobertG

2
발견 : stackoverflow.com/q/6573289/1143126 에서 이것은 기본적으로 질문이 물었습니다
RobertG

구체적으로 다음은 surefire로 maven 목표를 디버그하는 방법입니다. stackoverflow.com/a/8339155/929708
JJ Brown

40

아주 쉽게. Intellj Idea 15.0.4를 사용하고 있습니다.

  1. Maven 플러그인에서 중단 점 설정
  2. 태그 "Maven Projects"에서 마녀가 maven 플러그인을 사용하는 프로젝트로 이동합니다.
  3. "플러그인"에서 플러그인을 찾고 목표 위에 마우스 오른쪽 버튼을 클릭하고 디버그

다음은 스크린 샷입니다.

스크린 샷


1
이 답변은 부정적인 점수를 받았지만 내가 가진 문제 (IntelliJ에서 maven 기반 프로젝트를 디버깅하는 방법)를 해결하는 데 도움이되었으며 문제를 "인터넷 검색"할 때이 페이지로 연결되었습니다.
gbmhunter 2016-10-17

감사합니다. 귀하의 답변은 아이디어 실행 중에 자동으로 maven 플러그인을 사용하는 방법을 파악하는 데 도움이되었습니다.
아나톨리 Yakimchuk을

이것은 실제로 아주 좋은 대답입니다. 나에게는 원격 디버그를 설정하는 것보다 이런 방식으로 수행하는 것이 훨씬 쉽고 간단합니다 (허용 된 답변에서 제 안됨). 다른 하나가 왜 받아 들여 졌는지 잘 모르겠습니다. 아마도 질문에 설명 된 상황에서는 작동하지 않을 수도 있지만 확실히 나를 위해 작동했다면 감사합니다!
Chanandler Bong

2
"Maven 플러그인에서 중단 점을 설정하십시오"이것이 실제로 의미하는 바가 확실하지 않습니까? 자바 클래스 자체에 중단 점을 두는 것과 다른가요?
Amalgovinus

"Maven 플러그인에 중단 점 설정"은 maven 플러그인 클래스에 중단 점을 넣는 것을 의미합니다
gorums

17

오래된 질문이지만 동일한 필요가 있었고 작동하는 데 시간이 걸렸습니다. 누군가를 도울 수 있기를 바랍니다.

테스트 디버깅 사용 :

mvn <goal> -Dmaven.surefire.debug 

또는

mvn <goal> -Dmaven.failsafe.debug

실행이 중지되고 주소 5005 (기본값)에서 소켓을 수신하면 구성된 원격 디버거를 실행합니다.

구성 방법 :

실행-> 구성 편집-> 원격 전송 : 소켓 디버거 모드 : 포트 연결 : 5005 (기본값)

-> 저장.


10

IntelliJ 내에서만 maven 목표를 디버깅하는 가장 쉬운 방법은 일반 maven 목표를 만들고 실행기 탭에서 해당 VM 옵션을 전달하는 것입니다.

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

여기서 8000은 원격 디버깅을위한 포트 번호입니다.

Maven 목표 구성

그런 다음 포트 8000으로 새 원격 구성을 만듭니다. Maven goal을 실행 한 후이 구성을 실행합니다.

원격 디버깅 구성


8

가장 쉬운 해결책은 일시적으로 maven 플러그인을 종속성으로 추가하는 것입니다. 이 작업이 완료되면 IntelliJ는이를 다른 종속성과 마찬가지로 처리하고 일반적인 방법으로 중단 점을 설정할 수 있습니다.


1
여기에 점을 찍고 mvn 대신 mvnDebug를 사용합니다. 그런 다음 포트 8000의 intellij에서 원격 디버그 실행기를 만듭니다
user85155

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>

mvn대신 Maven 목표를 실행하십시오.mvnDebug . 예mvn spring-boot:run

IDEA에서 원격 구성을 추가하십시오. 설정에서 전송 : 소켓, 디버거 모드 : 연결, 호스트 : localhost, 포트 : 8000 (mvnDebug의 기본 포트)을 설정합니다.

코드를 디버깅 할 때마다 IDEA에서 디버그로 실행합니다.


3
봄을 언급하지 않았다 문제는,이 답변이 봄 - 특정
Amalgovinus

1

Intellij로 작업하고 있으므로 이미 내장 디버거가 있으며 명령 줄 도구 인 mvnDebug를 반드시 사용할 필요는 없습니다. 이 자습서를 확인하십시오 : Intellij IDEA에서 Maven 애플리케이션을 디버깅하는 방법 .

이 자습서에서는 Maven Exec 플러그인을 사용하며 명령 줄 또는 .NET Framework를 사용하지 않고도 애플리케이션을 디버깅 할 수 있습니다 MvnDebug. 그것을 공유하는 것이 여기에서 가치가있을 수 있다고 생각합니다.


2
자습서에서는 디버깅 만 다룹니다 exec:java. 그러나 JVM에 대한 추가 인수를 제공해야하는 경우에는이를 사용해야합니다 exec:exec( stackoverflow.com/questions/7305090/… 참조 ).이 방법은 디버깅 할 수 없습니다.
mirelon 2014 년

0

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