2012-07-17 3 views
13

described here과 비슷한 프로젝트로 작업하고 있습니다. Maven으로 빌드 된 이클립스 플러그인의 버전 번호 업데이트 프로세스를 자동화하는 방법

<modules> 
    <module>../de.vogella.tycho.plugin</module> 
    <module>../de.vogella.tycho.feature</module> 
    <module>../de.vogella.tycho.p2updatesite</module> 
</modules> 

이 모듈

는 예를 들어, 일반 버전 번호가 : 그래서, 그것은 부모의 pom.xml에 몇 가지 모듈을 가지고 1.0.0-SNAPSHOT 또는없이 -SNAPSHOT. 플러그인 프로젝트 (P2 업데이트 사이트 프로젝트)

<plugin 
     id="com.my.plugin" 
     download-size="0" 
     install-size="0" 
     version="1.0.0" 
     unpack="false"/> 

파일의 category.xml 및 MANIFEST.MF (:

<feature 
     id="com.my.feature" 
     label="My plugin feature" 
     version="1.0.0"> 

과 : feature.xml 파일은 동일한 버전 번호를 포함해야합니다)는 동일한 값을 포함해야합니다.

질문 : Maven을 사용하여 이러한 모든 파일에서 버전 번호 업데이트 프로세스를 자동화하는 방법은 무엇입니까?

maven-release-plugin 및 maven-versions-plugin을 사용하여이 문제를 해결하려고했습니다. 첫 번째 플러그인은 (CVS 커밋을 많이 만드는 것과 같이)이 프로젝트에서 사용하지 않는 많은 사용되지 않는 액션을 만듭니다. 두 번째 플러그인은 pom.xml 파일을 변경하고 feature.xml, category.xml 및 MANIFEST.MF를 수정하지 않거나별로 좋지 않습니다.

+2

업데이트해야하는 파일은 어디에 있습니까? 파일 필터링에 대해 생각해보십시오. – khmarbaise

답변

20

이 문제와 정확히 일치하는 tycho-versions-plugin이 있습니다. 이것은 의도적으로 maven-versions-plugin과 동일하게 작동하지만 feature.xml 및 MANIFEST.MF의 (중복 된) 버전도 업데이트합니다.

플러그인은 또한 feature.xml의 플러그인에 대한 참조 또는 category.xml의 기능에 대한 참조와 같은 정확한 버전을 지정하는 참조를 업데이트합니다. 따라서 결국 리팩터링과 마찬가지로 이슈 버전의 모든 항목이 업데이트됩니다.

정확한 버전의 참조 정보에는 일반 Tycho 빌드 중에 자동 업데이트가 있습니다. 따라서 예를 들어 귀하의 기능이 플러그인 버전 1.0.0.qualifier을 참조하면이 버전 문자열은 예를 들어 1.0.0.201207171147. 이 기능을 사용하여 tycho-versions-plugin에서 업데이트해야하는 작업 영역의 수를 최소화 할 수 있습니다. 참조에서 현재 버전 리터럴을 지정하는 대신 0.0.0 마법 버전을 사용할 수 있습니다. 이 버전은 일반 빌드의 일부로 최신 버전으로 자동 업데이트됩니다.

+0

모두 동의합니다. –

9
내가 Tobias Oberlies '대답에 나처럼 경험이 적은 받는다는 사용자를위한 몇 가지 구체적인 힌트를 추가 할

: 마스터 치어에서 참조하는 모든 프로젝트의 버전을 변경합니다

목표 tycho-versions:set-version. 각 Eclipse/OSGi 아티팩트 (MANIFEST.MF, feture.xml, category.xml)뿐만 아니라 maven 구성 파일 (pom.xml)의 버전 문자열은 일관되게 변경됩니다.

다음 사용 명령 줄에서 목표를 실행하려면이 예에서

mvn org.eclipse.tycho:tycho-versions-plugin:set-version -DnewVersion=1.2.0-SNAPSHOT 

newVersion 사용자 속성, 1.2.0-SNAPSHOT을 설정 할 새 버전입니다.

위의 명령 줄은 tycho-versions-plugin의 최신 버전을 사용합니다.특정 버전의 플러그인을 사용해야하는 경우 tycho-version-plugin을 마스터 pom의 project/build/plugins 섹션에 추가해야합니다.

<plugin> 
    <groupId>org.eclipse.tycho</groupId> 
    <artifactId>tycho-versions-plugin</artifactId> 
    <version>${tycho-version}</version> 
</plugin> 

티코의 현재 버전 ${tycho-version}를 교체하거나 그 이름과 적절한 값을 가진 속성을 정의합니다.

+0

왜 POM에 newVersion을 정의 하시겠습니까? – oberlies

+0

힌트를 보내 주셔서 감사합니다. 두 번째 생각을하면, 누군가는 pom 파일에 새 버전을 저장하려고하지 않을 가능성이 큽니다. –

+0

감사합니다. 매력처럼 작동합니다! –