programing

메이븐 스킵 테스트

new-time 2020. 5. 23. 23:50
반응형

메이븐 스킵 테스트


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

의 내장되지 않으며, 그들에 의존하는 모듈은 빌드를 실패합니다.반대로

-DskipTests

Maven은 테스트를

실행

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


패키지를 빌드하기 위해 테스트와 상호 의존했습니다.다음 명령은 목표를 달성하기 위해 테스트 아티팩트의 필요성을 무시합니다.

mvn -DskipTests=true  package

나는 당신에게 동일한 문제를 일으키는 예를 줄 수는 있지만 질문에 대한 답을 줄 수는 없습니다. (또한이 예에서는 Maven 2에 적용되지 않을 수있는 Maven 3 지식을 사용하고 있습니다.)멀티 모듈 maven 프로젝트 (모듈 포함

A

B

B

따라 다름) 에서 에서 테스트 종속성

A

추가 할 수도 있습니다 .

A

 

B

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

<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

참조하십시오. )

 

프로젝트

A

tests

테스트 클래스 및 테스트 리소스가 있는 분류기 보조 아티팩트를 생성합니다 .로 프로젝트를 빌드

-Dmaven.test.skip=true

하면 로컬 리포지토리 또는 외부 리포지토리에

테스트 아티팩트

가없는 한 종속성 해결 오류가 발생 합니다. 테스트 클래스가 컴파일되지 않았거나

tests

아티팩트가 생성 되지 않았기 때문입니다 .

 

당신이 빌드를 실행하는 경우,

-DskipTests

귀하의

tests

유물 (테스트가 실행되지 않습니다하지만) 생산되고 의존성이 해결 될 것입니다.


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

  • -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을 새로 설치하는 동안 테스트 사례를 건너 뛰려면 다음 명령에서 -DskipTests paramater를 사용했습니다.

mvn clean install -DskipTests

터미널 창으로


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>

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

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

출처 :

Surefire 매개 변수 세부 사항

참고 URL :

https://stackoverflow.com/questions/24727536/maven-skip-tests

반응형