maven-release-plugin으로 테스트를 건너 뛰려면 어떻게해야합니까?


177

테스트를 트리거하지 않고 maven-release-plugin을 실행하려면 어떻게해야합니까?

나는 시도했다

-Dmaven.test.skip=true 

-DskipTests 

-DpreparationGoals=clean

... 아직 작동하지 않습니다.

예, 테스트에 통과하지 못하면 릴리스하지 않아야한다는 것을 알고 있지만 동료가 신뢰할 수있는 테스트를 작성하도록 제어 할 수는 없습니다.

답변:


406

-Darguments="-DskipTests" 원하는 것, 또는 pom에서 분기 실행을 명시 적으로 구성하는 것입니다.


1
그것은 나를 위해, 감사하고 +1 작동하지만 ...이 필요합니까?
javamonkey79

5
릴리스 프로세스가 새로운 maven 프로세스를 분기하고 tpical -DskipTests가 시스템 특성으로 전달되지 않기 때문에 IT가 필요합니다.
Eddie

4
내가 당신 2을 투표 할 수 있기를 바랍니다 . 나는 이것을 올바르게하려고 노력하는 데 몇 시간을 보냈지 만 ... 1. 문서에서 무언가를 놓쳤거나 mvn 문서에 무언가가 빠져 있습니까? 2. <skipTests>true</skipTests>회사 POM에서 구성했습니다. 여전히 작동하지 않았습니다. 효과가 있었던 것은 솔루션이었습니다.
Pulak Agrawal

이 작업을 수행하려면 pom에 특정 구성이 필요합니까?
DenCowboy

42

-Darguments="..."갈래의 maven 프로세스에 인수를 전달하지만 여기에 두 개의 다른 스위치가 사용되고 있다는 것을 인식하는 것이 중요합니다. -DskipTests(당신이 테스트 항아리 형에 대한 종속성이있는 경우이 중요하다) 힘은 어떤 테스트를 실행하지 받는다는하지만, 테스트는 여전히 컴파일됩니다. -Dmaven.test.skip=true을 받는다는 힘 심지어 어떤 시험 병이 발생되지 않음을 의미 테스트를 컴파일되지.

따라서, 컴파일 사용을 중지 -Darguments하려면 skipTests, use only running running 테스트를 건너 뛰어야 합니다 maven.test.skip.



3

릴리스 플러그인으로 테스트를 피하고 건너 뛸 수있는 너무 다른 선택이 있습니다.

  • 첫 번째는 -Darguments를 제공하여 cli에 대한 인수로 릴리스 목표 또는 단계에 전달하는 것입니다.

예 : mvn -X -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true" -P release-mode release:prepare

두 번째는 빌드에서 pom.xml에 대한 인수를 다음과 같이 수행하는 것입니다.

<plugin>    
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.scm</groupId>
                        <artifactId>maven-scm-provider-gitexe</artifactId>
                        <version>1.9.4</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <skip>true</skip>
                    <skipTests>true</skipTests>
                    <preparationGoals>clean validate</preparationGoals>
                    <arguments>-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true</arguments>
                    <useReleaseProfile>false</useReleaseProfile>
                    <releaseProfiles>release-mode</releaseProfiles>
                    <tagNameFormat>TEST-@{project.version}</tagNameFormat>
                </configuration>
            </plugin>

두 번째 방법은 첫 번째 방법보다 우선합니다.

한 번의 작업으로 릴리스를 먼저 준비한 후 작업 디렉터에서 release.properties 파일을 편집하고 exec.additionalArguments인수가있는 경우 특성을 볼 수 있도록 명령했습니다. 다음과 같습니다 exec.additionalArguments=-Dmaven.javadoc.skip\=true -Dmaven.test.skipTests\=true -Dmaven.test.skip\=true -P release-mode..

릴리스를 수행 한 후


2

전체 단위 테스트를 건너 뛰려면 인수를 사용합니다.

-Dmaven.test.skip = true

따라서 단위 테스트를 건너 뛰려면 해결됩니다.

mvn install -Dmaven.test.skip=true
mvn package -Dmaven.test.skip=true

또는 대안으로 maven-surefire-plugin에서 skipTests를 정의 할 수 있습니다

pom.xml

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

2
이 질문은 특히 Maven 릴리스 플러그인에 관한 것이므로 사용될 Maven 목표는 아닙니다.
Jaap December

-2

어떤 메이븐 플러그인도 문자 그대로 테스트 컴파일 또는 실행을 트리거하지 않습니다. 하나 이상의 플러그인이 목표를 특정 단계로 제한했을 때 하나 이상의 플러그인의 실행을 트리거하는 것은 Maven 라이프 사이클 단계입니다.

따라서 테스트를 실행하지 않고 단일 플러그인 목표 만 실행하면 충분합니다.

mvn release:perform

또는 프로젝트 빌드 및 패키징과 결합하십시오.

mvn clean package release:perform
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.