[maven] 메이븐 스킵 테스트

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

mvn clean install -Dmaven.test.skip=true

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

mvn clean install -DskipTests

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

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

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



답변

언급했듯이 -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을 빌드하여 후속 모듈에서 사용할 수 있도록합니다.


답변

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

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

mvn -DskipTests=true  package


답변

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

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


답변

나는 당신에게 같은 문제를 일으키는 예를 줄 수는 있지만 질문에 대한 답을 줄 수는 없습니다. (또한이 예에서는 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 유물 (테스트가 실행되지 않습니다하지만) 생산되고 의존성이 해결 될 것입니다.


답변

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

mvn clean install -DskipTests

터미널 창으로


답변

surefire-plugin 버전에 따라 -DskipTests 매개 변수가 작동하지 않을 수 있습니다.

“-DskipTests”대신 “-Dmaven.test.skip.exec”를 사용할 수 있습니다.

출처 : Surefire 매개 변수 세부 사항


답변

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>