2013-08-28 3 views
5

우리는 versionId를 POM으로 지정하고 그에 따라 maven은 foo-version.jar을 생성합니다. 예 : foo-1.0-SNAPSHOT.jar.maven 빌드 - 버전 정보

maven을 사용하여 다음 작업을 수행 할 수 있습니까?

  • POM에는 versionId를 지정하지 않고 명령 줄에서 빌드 버전을 지정하십시오. 이렇게하면 POM의 버전을 "하드 코드"하지 않고 각 릴리스마다 버전을 변경하는 데 도움이되지만 수퍼 빌드 스크립트를 통해 버전을 지정하십시오. 장소 홀더

    <groupId>test</groupId> 
    <artifactId>x</artifactId> 
    <version>${project.version}</version> 
    

    등의 치어에

+2

릴리스에 대한 변경이 릴리스 플러그인이 아닌 수동으로 수행해야합니다. – khmarbaise

+0

특정 바이너리 버전의 소프트웨어를 가지고있을 때 빌드하는 데 사용 된 소스 버전을 어떻게 알 수 있습니까? – artbristol

답변

5

설정 프로젝트 버전은 이제

mvn -Dproject.version=1.1.1 package 
+0

나는 Maven 2의 옛날에이 방법을 사용하지 않았다. 결과 POM은 사용할 수 없게 생성됩니다. (나는 이것이 지금 개선 되었으면 좋겠다). 이것이 POM의 버전 변경을 수행하기위한 작은 스크립트를 작성해야하는 이유입니다. –

+0

이 방법이 효과적이지만 생성/설치된 POM에도 ' $ {project.version}'이 있습니다. 의존 모듈이이 모듈을 사용하는 데 문제가되지 않습니까? 생성 된 POM에는 모듈이 빌드 된 실제 버전이 있어야합니다. – gammay

4

당신은 maven release plugin를 사용할 수있는 명령 줄에서 버전을 전달할 수 있습니다. 각 모듈의 동일한 버전을 원하는 경우

release:update-versions -DautoVersionSubmodules=true

당신은 autoVersionSubmodules이 필요합니다. 그렇지 않으면 각각에 대한 버전을 지정해야합니다. 특정 버전 내가 트릭을 수행 다른 플러그인을 발견 명령

UPDATE에 -DdevelopmentVersion=your version를 추가하려면

만, 현재 버전을 증가합니다. 당신이 버전을 설정할 수 있습니다이 명령으로
<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>versions-maven-plugin</artifactId> 
    <version>2.1</version> 
</plugin> 

The maven versions plugin : versions:set -DnewVersion=your version

+0

첫 번째 옵션을 시도했을 때 다음 오류가 발생했습니다.'[오류] 목표 org.apache.maven.plugins : maven-release-plugin : 2.3.2 : update-versions (default-cli)를 프로젝트 단순으로 실행하지 못했습니다. : 필수 설정 누락 : scm connection 또는 developerConnection을 지정해야합니다. -> [도움말 1]'. 두 번째 옵션은 빌드 후 * 버전을 업데이트했습니다! 어쨌든, POM이 CM에 체크인 될 때 ​​버전을 POM에서 없애고 각 빌드에 대해 파일을 커밋하고 싶지는 않습니다. – gammay

+0

그런 다음 scm 태그를 pom에 추가해야합니다. [here 's] (http://maven.apache.org/scm/maven-scm-plugin/usage.html) 사용 예 – mokuril