2012-09-12 4 views
6

TeamCity에서 Maven 빌드를 실행하고 build.vcs.number를 사용하여 Subversion 버전을 내 매니페스트에 작성합니다. VCS를이 인 TeamCity는 1234 분기의 최신 개정이 건설되고있는 받는다는 명령 줄에Maven 릴리스 중 속성 손실 : 수행

-Dbuild.vcs.number=1234 

을 추가로 어떤 메이븐에서 서브 버전으로 구축 할 수 있습니다. 포인트 $ {build.vcs.number}이 널 (null)이되는 (인 TeamCity에서도) 수행 :

그런 다음 내 pom.xml 파일에, 나는

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <configuration> 
     <archive> 
      <manifest> 
       <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> 
       <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
      </manifest> 
      <manifestEntries> 
       <build>${build.vcs.number}</build> 
      </manifestEntries> 
     </archive> 
    </configuration> 
</plugin> 

이 모두 내가 메이븐 버전을 실행할 때까지 잘 작동이 , TeamCity 빌드에서이 속성이 명령 줄에서 전달 된 로그를 볼 수는 있지만.

maven-release-plugin 문서는 Maven이 수행 목표 중 어느 시점에서 fork 된 프로세스를 실행한다는 것을 의미합니다. 이것이 내가 문제가되는 이유입니까?

이 특정 속성을 포크 프로세스로 전달할 수있는 방법이 있습니까?

답변

4
-Darguments=-Dbuild.vcs.number=1234 

깨끗한 재생 가능한 명령 줄이 있는지 확인하기 위해 릴리스 프로세스가 있습니다. 따라서 통과 할 항목을 지정해야합니다.

이상적으로 속성을 통과 시키려면 Pom의 릴리스 플러그인을 구성해야하지만, 누군가가 Pom에서 재정의를 비활성화하지 않은 이상 오버라이드를 사용하지 않는 것이 이상적입니다. 다시 활성화 할 때까지 멈춰 있습니다.

참고 : 공백이있는 속성 또는 속성이 여러 개있는 경우 인용에주의하십시오.

+0

아, 내가 찾고있는 광채가 참 훌륭합니다. – RCross