메이븐 스킵 테스트


225

Maven 2.2.1을 사용하고 있으며 프로젝트를 빌드하기 위해이 명령을 사용했습니다.

mvn clean install -Dmaven.test.skip=true

그러나 빌드가 아티팩트 중 하나를 찾을 수 없다고 말하지 못했습니다. 그러나 내가 사용했을 때 :

mvn clean install -DskipTests

모든 것이 잘 작동했습니다.

지금까지 나는이 두 명령이 동일하다고 생각했습니다. 그러나, 이 링크는 그 제안하는 것 -Dmaven.test.skip=true또한 테스트 케이스를 컴파일 건너 뜁니다.

그러나 여전히 한 명령이 작동하고 다른 명령이 작동하지 않는 이유를 설명하지 못했습니다. 누군가 나에게 이것을 설명해 주시면 감사하겠습니다.


1
어떤 버전의 maven-surefire-plugin을 사용하고 있습니까? 읽고있는 문서 버전과 동일합니까?
gerrytan

2
하나는 건물을 건너 뛰고 다른 하나는 달리기를 건너 뜁니다. 둘 다 원한다면 둘 다 사용하십시오.
Elliott Frisch

1
오류 메시지 또는 스택 추적에 대한 세부 정보를 제공 할 수 있습니까?
Raghuram

1
왜되어, 이전 메이븐 버전을 사용하는 이미이 EOL 정의를 .
khmarbaise

1
그래서 내가 사용해야하는 모든 테스트를 완전히 건너 뛰는 것이 사실 -Dmaven.test.skip=true -DskipTests입니까? 상황에 따라 때때로 다른 것을 생략 할 수도 있지만 누가 그것에 대해 생각하고
싶을까

답변:


120

언급했듯이 -Dmaven.test.skip=true테스트 컴파일을 건너 뜁니다. 더 나아가서는 테스트 아티팩트 빌드를 건너 뜁니다. 대규모 프로젝트의 일반적인 관행은 동일한 프로젝트의 모듈간에 테스트 유틸리티 및 기본 클래스를 공유하는 것입니다.

이것은 모듈 test-jar에 이전에 빌드 된 모듈이 필요하도록함으로써 달성됩니다 .

<dependency>
  <groupId>org.myproject.mygroup</groupId>
  <artifactId>common</artifactId>
  <version>1.0</version>
  <type>test-jar</type>
  <scope>test</scope>
</dependency>

경우 -Dmaven.test.skip=true(또는 간단히가 -Dmaven.test.skip) 지정되면,test-jar 의 내장되지 않으며, 그들에 의존하는 모듈은 빌드를 실패합니다.

반대로 -DskipTestsMaven은 테스트를 실행 하지 않지만 테스트를 컴파일하고 테스트 jar을 빌드하여 후속 모듈에서 사용할 수 있도록합니다.


2
이 문제를 해결하는 방법? 내 온라인 maven 명령으로 -Dmaven.test.skip을 사용하십시오.
넵튠

2
@ 해왕성 무슨 문제? 새로운 질문이 있으면 새 게시물을 사용하여 질문하십시오.
Mureinik

58

패키지를 빌드하기 위해 테스트와 상호 의존적이었습니다.

다음 명령은 목표를 달성하기 위해 테스트 아티팩트의 필요성을 무시합니다.

mvn -DskipTests=true  package

29

각 매개 변수마다 차이가 있습니다.

  • -DskipTests는 실행중인 테스트 단계를 건너 뜁니다. 즉,이 프로세스가 끝나면 테스트가 컴파일됩니다.

  • -Dmaven.test.skip = true 테스트 컴파일 및 실행 단계를 건너 뜁니다.

매개 변수 -Dmaven.test.skip = true 컴파일을 건너 뛰면 테스트 아티팩트가 없습니다.

자세한 내용은 surfire 설명서를 참조하십시오. http://maven.apache.org/plugins-archives/maven-surefire-plugin-2.12.4/examples/skipping-test.html


15

나는 당신에게 같은 문제를 일으키는 예를 줄 수는 있지만 질문에 대한 답을 줄 수는 없습니다. (또한이 예에서는 Maven 2에 적용되지 않을 수있는 Maven 3 지식을 사용하고 있습니다.)

멀티 모듈 maven 프로젝트 (모듈 포함 ABB따라 다름) 에서 에서에 대한 종속성A추가 할 수도 있습니다 .AB

이 종속성은 다음과 같습니다.

<dependency>
     <groupId>com.foo</groupId>
     <artifactId>A</artifactId>
     <type>test-jar</type> <!-- I'm not sure if there is such a thing in Maven 2, but there is definitely a way to achieve such dependency in Maven 2. -->
     <scope>test</scope>
</dependency>

(자세한 내용은 https://maven.apache.org/guides/mini/guide-attached-tests.html참조하십시오. )
프로젝트 Atests테스트 클래스 및 테스트 리소스가 있는 분류기 로 보조 아티팩트를 생성합니다 .

로 프로젝트를 빌드 -Dmaven.test.skip=true하면 로컬 리포지토리 또는 외부 리포지토리에 테스트 아티팩트 가없는 한 종속성 해결 오류가 발생 합니다. 테스트 클래스가 컴파일되지 않았거나 tests아티팩트가 생성 되지 않았기 때문입니다 .
그러나, 당신은 당신의 빌드를 실행하면 -DskipTests사용자의tests 유물 (테스트가 실행되지 않습니다하지만) 생산되고 의존성이 해결 될 것입니다.


10

maven을 새로 설치하는 동안 테스트 사례를 건너 뛰려면 다음 명령에서 -DskipTests 매개 변수를 사용했습니다.

mvn clean install -DskipTests

터미널 창으로



1

maven 컴파일 중에 pom.xml에 다음 플러그인을 추가하여 테스트 실행을 건너 뛸 수 있습니다

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.20.1</version>
    <configuration>
         <skipTests>true</skipTests>
    </configuration>
</plugin>

1
그것은 당신이 할 경우에도 테스트를 생략mvn test
Pratik Singhal이에게
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.