2017-10-23 1 views
2

https://www.cloudbees.com/blog/new-way-do-continuous-delivery-maven-and-jenkins-pipeline에 따르면 pom.version.replace를 사용하여 pom에 쓰는 방법은 어떻게됩니까? 나는 pom.version.replace가 아무것도 수정하지 않는다고 가정하지만 변경 사항은 어떻게 pom에 저장 될 수 있습니까? 저는 현재 업데이트에 실패하는이 사용하고 있습니다 :writeMavenPom이 pom에 쓰여 있지 않음

def pom = readMavenPom file: 'pom.xml' 
    def version = pom.version.replace("-SNAPSHOT", "") 
    writeMavenPom model: pom 

답변

1

당신은 필요가 있지만

pom.version = pom.version.replace("-SNAPSHOT", "") 

을 pom 객체를 변경하십시오. replace 메서드는 문자열을 수정하지 않고 새 문자열을 반환합니다. 변경된 버전을 이미 저장 했으므로 pom.version을 덮어 씁니다. readMavenPom에 의해 반환 된 개체는 Model입니다. 이 클래스는 writeMavenPom과 함께 객체를 쓰기 전에 버전을 변경하는 데 사용할 수있는 setVersion 메소드가 있습니다.

그래서 다음과 같아야합니다

def pom = readMavenPom file: 'pom.xml' 
def version = pom.version.replace("-SNAPSHOT", "") 
pom.version = version 
writeMavenPom model: pom 
+0

예 그게 내가 NPM 프로젝트 파일을 변경해야 할 때 문제가 발생 – koller23

0

나는 데이터 저장 명령을 다음을 추가했다 : 더 나은 옵션을

1

난 그냥 다른 답변을 주석으로 붙여 링크에서 영감을 받고, 당신은뿐만 아니라 일부는 연속 전달을위한 새로운 메이븐 기능을 들여다있을 수 있습니다.

mvn clean package -DreleaseVersion=1.2.3-45 

참조 :

<version>${releaseVersion}</version> 
... 
<properties> 
    <releaseVersion>0-SNAPSHOT</releaseVersion> <!-- sane default --> 
</properties> 

그래서 당신은 단지 -D 매개 변수로 빌드하는 동안 원하는 버전을 전달할 수 : 즉, 당신은 버전으로 (Maven을 3.2.1로 시작하는) 지금 속성을 사용할 수 있습니다 여기에 대한 자세한 토론 : https://axelfontaine.com/blog/dead-burried.html

+0

을 한 일이었다 너무 – koller23

+0

@ koller23 문제가 편집을보다 더 복잡하다면 Maven POM, 질문을 수정하거나 새 질문을 추가해야합니다. Maven 및 NPM 빌드는 기술적으로 공통점이 없습니다 (워크 플로 아이디어는 상당히 유사하지만). –

1

maven versions plugin을 사용하는 것이 좋습니다.

Ypu이 명령을 -snapshot을 제거 할 수 있습니다

mvn versions:set -DremoveSnapshot 
+0

자, 그럼 NPM 프로젝트 파일도 상관 없습니까? – koller23

+0

NPM에 SNAPSHOT 태그를 추가하는 것은 좋은 습관이 아니므로 pom.xml이 NPM 프로젝트가 아닌 것으로 가정합니다. –

관련 문제