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
답변
각 매개 변수마다 차이가 있습니다.
-
-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 프로젝트 (모듈 포함 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
유물 (테스트가 실행되지 않습니다하지만) 생산되고 의존성이 해결 될 것입니다.
답변
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>