2014-11-06 18 views
2

빌드 프로세스 중에 X.Y.Z 버전을 자동 증가시키기위한 작업을하고 있습니다.Maven 자동 증가 릴리스 버전

  • X.Y.Z-SNAPSHOT =>X.Y.Z+1-SNAPSHOT
  • 하지X.Y.Z-SNAPSHOT =>X.Y.Z
  • 이 경우 우리는 오히려 버전의 작은 부분을 증가, (그것을 릴리스 버전을 만들기 위해)을 SNAPSHOT 접미사를 제거하지 않습니다

릴리스 버전이되도록 SNAPSHOT 접미사를 차단할 수 있기 때문에 메이븐 릴리스 플러그인을 사용할 수 없습니다. 그래서, 나는 버전을 증가시키는 논리를 가진 커스텀 스크립트를 만드는 것을 끝내었다.

  1. 체크 아웃 억지로에서 pom.xml을 여기

    내 질문은 내가 가장 다음 단계를 구현할 수있는 방법이다.

  2. 사용자 지정 스크립트를 실행하여 버전을 늘립니다.
  3. 배포가 성공하면 pom.xml 변경을 커밋하십시오.

부분적으로 위의 요구 사항을 충족하는 메이븐 프로필 autoversion을 만들었습니다. Maven은 먼저 리소스 생성 단계의 일부로 버전을 증가시킵니다. 그러나 결국 이전 버전의 프로젝트를 배포하게됩니다.

mvn -Pautoversion clean deploy 

     <profile> 
     <id>autoversion</id> 
     <build> 
      <plugins> 
            <plugin> 
             <artifactId>exec-maven-plugin</artifactId> 
             <groupId>org.codehaus.mojo</groupId> 
             <executions> 
              <execution> 
               <id>Calculate version</id> 
               <phase>generate-resources</phase> 
               <goals> 
                <goal>exec</goal> 
               </goals> 
               <configuration> 
                <executable>${basedir}/autoincrementversion.sh</executable> 
                <arguments> 
                  <argument>-bdj</argument> 
                </arguments> 
               </configuration> 
              </execution> 
             </executions> 
            </plugin> 
            <plugin> 
              <groupId>org.apache.maven.plugins</groupId> 
              <artifactId>maven-scm-plugin</artifactId> 
              <version>1.9</version> 
              <executions> 
                <execution> 
                  <phase>generate-resources</phase> 
                  <goals> 
                    <goal>edit</goal> 
                    <goal>checkin</goal> 
                  </goals> 
                  <configuration> 
                    <username>jenkins</username> 
                    <basedir>./</basedir> 
                    <includes>pom.xml</includes> 
                    <message>Auto increment pom version</message> 
                  </configuration> 
                </execution> 
              </executions> 
            </plugin> 
      </plugins> 
     </build> 
    </profile> 


[INFO] ------------------------------------------------------------------------ 
[INFO] Building project 99.22.8 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- versions-maven-plugin:1.3.1:set (default-cli) @ project --- 
[INFO] Searching for local aggregator root... 
[INFO] Local aggregation root: /opt/project/auto-increment-release 
[INFO] Processing com.project 
[INFO]  Updating project com.project 
[INFO]   from version 99.22.8 to 99.22.9 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2.135s 
[INFO] Finished at: Wed Nov 05 23:15:13 PST 2014 
[INFO] Final Memory: 11M/152M 
[INFO] ------------------------------------------------------------------------ 

요구 사항을 달성하기위한 모든 지침을 매우 높이 평가합니다.

+0

[Maven 3.2.1] (http://maven.apache.org/docs/3.2.1/release-notes.html)을 자세히 살펴보고 속성을 통해 외부 사이트에서 직접 지원해야한다고 말하고 싶습니다. . 출시 노트 '지속적인 배송 친화적 인 버전'을 참조하십시오. – khmarbaise

+0

포인터를 사용해 주셔서 감사합니다. 다른 여러 가지 요인을 테스트해야하기 때문에 업그레이드는 즉각적인 옵션이 아닙니다. – user6930

+0

@ user6930,이 부분에서 Maven Release Plugin이 ""버전을 출시하기 위해 SNAPSHOT 접미어를자를 수 있음을 확신하지 못합니다 "_.실제로 버전의 가장 작은 유효 숫자를 자동 증가시키는 것을 제안합니다. 니가 원하는게 아니야? – uvsmtid

답변

1
우리는 실제로 X.Y.Z.N 같은 것을 모든 버전 번호를 변경 비슷한 상황에서 메이븐 출시 플러그인 (MRP)를 사용하는 것을 고려하고

:

  • X.Y.Z 적절한 인간의 유도 방출 동안 거의 변경되지 않는 의미 부분이다
  • NMRP가 자동으로 증가 할 수있는 증분 부분 (의미없는 순서 순서)입니다.

예, MRP는 두 가지 추가 커밋 (출시 된 버전과 다음 SNAPSHOT 버전)을 만들지 만 개발자가 스냅 샷 빌드를 작성하는 경우 X.Y.Z.N-SNAPSHOT 버전이 필요합니다. 또한 점진적 릴리스를 원하면 X.Y.Z.N도 필요합니다. 따라서, 동일한 두 커밋.

모두 avoid optionally is X.Y.Z.N taggingX.Y.Z 만 대기 중입니다.