Maven 3.0.4 사용.메이븐 3 : "루트"기업 버전에 액세스 POM
저는 회사 조직의 POM을 제공해야 할 의무가 있습니다. 저희 팀은이 POM을 사용할 때 개발자가 가지고있는 질문이나 문제에 대한 지원을 제공 할 것입니다. 종종 빌드 로그를 지원 티켓에 첨부합니다. 따라서 회사 POM에서 회사 상위 버전을 모든 빌드로 콘솔에 반향시키고 싶습니다. 나는 이것을 위해 antrun 플러그인을 사용하고있다.
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>echo-build-environment</id>
<phase>validate</phase>
<goals><goal>run</goal></goals>
<configuration>
<target>
<echo level="info" message="Maven ${maven.version}" taskname="Version" />
<echo level="info" message="Corporate POMs ${want.the.version.here}" taskname="Version" />
....
</target>
트릭 내가 POM 상속의 많은 "수준"기업 부모와 빌드에 사용 된 POM 사이에 올 수있는 방법을 모를 것이다. 이 같은
corporate-parent
team-parent
application-parent
child-module
또는 간단 :
corporate-parent
a-simple-library
나는 현재 (자식) 프로젝트의 버전이 될 것 같은 ${project.version}
에코 할 수없는 우리는이 같은 상속 구조 뭔가를 할 수있다. 얼마나 많은 상속 수준이 있을지 모르기 때문에 ${project.parent.version}
을 사용할 수 없습니다. 나는 기업 POM 버전에 하드 코드 된 <corporate.pom.version>
속성을 정의하려고 시도했다. 그러나 회사 POM을 릴리스 할 때 릴리즈 플러그인은 해당 속성을 업데이트하지 못한다. (이는 의미가있다. 종속 버전이 아니라 단지 속성 일 뿐이다. 버전은 그것을 알 수 없습니다).
이상적으로는 ${some.groupId.corporate-parent.version}
과 같은 속성을 통해 특정 POM 버전을 직접 얻을 수 있기를 바랍니다. 존재하는 것과 비슷한 것이 있습니까?
그렇지 않은 경우 릴리스되는 프로젝트의 releaseVersion
으로 POM 속성을 업데이트하는 방법이 있습니까?
각 릴리스 전에 수동으로 속성을 편집하는 무차별 방식으로 되돌릴 수 있습니다. 저의 팀원들은 그런 접근 방식을 고맙게 생각합니다.
언뜻보기에는 어려운 것 같지 않은 작업을 수행하기 위해 사용자 정의 플러그인을 작성할 필요가 없기를 희망합니다. 설치 파일을 사용하여, maven-install-plugin 및 maven-deploy-plugin 및 파일을 배포 - 당신의 pom.xml 의 필터링 된 버전을 생성하는 maven-resources-plugin - : 두 플러그인의 조합을 사용하여 설치/배포 POM의 특성 확장을 달성 할 수
감사합니다, 나는 조금 탐구해야합니다 :
결과 로그는 것 같습니다. POM에는 필터링 프로세스에 의해 변경되지 않고 유지되어야하는 많은 다른 속성이 있습니다. 설치와 배포는'release : perform'의 일부로 이미 발생합니다. – user944849
나는'@ {프로젝트.버전}'release의 tagNameFormat 요소에 사용 : prepare & this가 작동하지 않습니다. 몇 가지 쟁점 : 릴리스 플러그인은''요소 (소스 코드 확인)를 필터링하지 않으며, POM 자체가 공개되는 동안 필터하기가 어렵습니다. 그래도 감사합니다! –
user944849
정확히 작동합니까? 플러그인이 아닌 3 개가 아닌가? – stackexchanger