2012-07-19 3 views
7

나는 "Maven"프로젝트를 가지고 있습니다. 프로젝트의 pom.xml에서 버전은 0.1입니다. Jenkins에서 매개 변수화 된 빌드를 사용하고 텍스트 매개 변수 myNewVersion = 3.1을 설정합니다.Maven 배포는 maven-versions plugin에 의해 설정된 프로젝트 버전을 무시합니다.

가 건설되고
versions:set -DnewVersion=${myNewVersion} versions:commit deploy 

이 받는다는가 제대로 "3.1"에 pom.xml 파일의 버전을 업데이트합니다 은 또한 다음과 같은 받는다는 목표를 설정합니다. 그러나 maven 배포 작업은 내 프로젝트를 "core-0.1"로 배포하며 여전히 0.1 버전입니다. 내 넥서스의 0.1 dir에 포함 된 pom 파일에는 버전 번호 "3.1"이 나와 있습니다.

maven 배포 작업이 maven 버전 플러그인에서 설정 한 올바른 버전을 사용하도록하려면 어떻게해야합니까?

도움 주셔서 감사합니다.

편집 1 : 내 요구를 명확히하기 : POM의 프로젝트 버전은 실제 빌드 버전을 나타내지 않아야합니다. 내 "핵심"프로젝트가 기본 시스템 및 API와의 호환성을 결정하는 데 사용합니다. 더 자세히 설명하자면, "core"프로젝트는 젠킨스의 "interfaceVersion = 3.1"또는 "interfaceVersion = 4.0"매개 변수를 가져옵니다. 이는 핵심 프로젝트가 다른 "라이브러리"번들에 대한 종속성을 위해 사용하는 버전을 결정합니다.

이제 Jenkins 빌드 작업이 두 개 있습니다. 하나는 3.1이고 다른 하나는 핵심 프로젝트의 4.0 라이브러리 프로젝트 종속성입니다. 각각은 SVN에서 동일한 프로젝트 코드를 체크 아웃하지만 빌드중인 "핵심"프로젝트에 다른 버전 매개 변수를 전달합니다. 이 버전 번호를 pom.xml의 프로젝트 버전 번호로 사용하고 넥서스 (예 : core-3.1.jar 또는 core-4.0.jar)에 배포 할 Jar의 버전 번호로 사용하고 싶습니다.

편집 2 : 나는 조금 더 나아 갔다. 방금 jenkins에서 pum 파일의 프로젝트 버전 번호로 매개 변수화 된 빌드 섹션의 매개 변수로 설정 한 버전 매개 변수를 사용합니다. 메이븐 (Maven)은이 일에 대해 경고하지만 작동합니다. 그러나 "core"에 의존하는 모든 프로젝트는 이제 "$ {myNewVersion}"을 종속성 버전으로 지정해야합니다.

그래서 위에서 설명한 것처럼 maven-plugin을 다시 설정하여 pom 파일의 버전을 덮어 쓰려고합니다. 그러나 maven 배포를 사용하면 "Access denied"오류가 표시됩니다. "버전 : set -DnewVersion = $ {myNewVersion} 버전 : 커밋"을 제거하고 "deploy"만 사용하면 작동합니다. 어떤 단서를 해결하는 방법? 나는이 같은 문제를 가지고,

<version>${version}</version> 

그런 다음 받는다는

mvn deploy -Dversion=${myNewVersion} 
+0

왜 릴리스 플러그인을 사용하지 :

widening에 의해 versions:set의 범위, 예를 고정 할 수 있는가? – khmarbaise

+0

AFAIK 버전 : 커밋은 릴리스에 의해 수행 될 수있는 SCM에 커밋하지 않습니다. 커밋 ... – khmarbaise

+0

@khmarbaise에서 제안한대로 M2_release 플러그인을 사용해보십시오. POM 버전 관리를 자동화하고 SCM 태그/레이블링을 처리합니다 : https://wiki.jenkins-ci.org/display/JENKINS/M2+Release+Plugin –

답변

0

이 같은 변수로 버전을 설정 그리고 versions 플러그인과 관련이 있고 Aggregator POM을 사용했습니다. 버전 변경은 부모가 집계 기 pom으로 설정되지 않은 하위 프로젝트로 전파되지 않았습니다.

versions:set -DgroupId=com.company.* -DartifactId=* -DnewVersion=${myNewVersion} versions:commit deploy 
0

같은 문제가 사람에게 실행 : 당신의 pom.xml에서

관련 문제