2012-12-11 2 views
1

모듈 종속성이있는 다중 모듈 maven 프로젝트가 있습니다. 공유에 의해 나는 동일한 의존성을 사용함을 의미한다. 그러나 각 모듈은 종속성 자체를 선언합니다.Maven 버전 플러그인, 버전 제한 : 업데이트 속성 손상

<properties> 
    <dependency1.version>1.0-SNAPSHOT</dependency1.version> 
    <dependency2.version>1.1-SNAPSHOT</dependency2.version> 
</properties> 

을 모든 모듈은 같은 것을 사용 : 정신을 (그래, 받는다는, 정신, 내가 아는) 유지하려면 및 종속성의 동일한 버전을 사용하는 모든 모듈을 가지고, 부모 치어 버전 번호와 속성을 선언

<dependency> 
    <groupId>group</groupId> 
    <artifactId>dependency1</artifactId> 
    <version>${dependency1.version}</version> 
</dependency> 

1 단계에서 종속성 버전을 변경할 수 있으므로이 설정에 매우 만족합니다.

이제는 내가 유지 관리하는 많은 의존성이 있습니다.

mvn release:prepare release:perform -B 

가 지금은 더 자동화 할 메인 프로젝트에서 나는 실행 : 사람들의 릴리스는 기본적으로 자동 매우 간단

mvn versions:update-properties 

(기본적으로 나는 또한 실행 : "MVN 버전 : 사용 -releases "를 사용하여 필요한 경우 일반적인 종속성을 변경하지만이 질문의 범위를 벗어납니다.

이 업데이트 속성을 실행하면 내 기본 프로젝트의 속성이 릴리스됨을 알립니다. 그러나 내 모듈이 속성을 사용하여 다른 종속성의 버전을 정의하고 해당 프로젝트의 최신 버전을 사용할 수있는 경우 해당 속성도 변경됩니다.

업데이트 속성으로 인한 피해를 최소화 할 수있는 방법이 있습니까? 버전 : use-release는 속성을 포함하는 을 사용하므로 광산에서만 사용 가능합니다. update-properties와 비슷한 것을 찾을 수 없습니다.

부모님 외에 다른 친구들도 모두 되돌릴 수 있고 커밋/푸시 만 가능하지만 우아하지는 않습니다.

답변

2

maven의 개념을 이해하지 못하는 것 같습니다. 당신은 그냥이 같은 의존성를 사용에서

<dependencyManagement> 
    <dependencies> 
    <dependency> 
     <groupId>com.google.inject</groupId> 
     <artifactId>guice</artifactId> 
     <version>3.0</version> 
    </dependency> 
    ... 
    </dependencies> 
</dependencyManagement> 

모듈 :

<dependencies> 
    <dependency> 
     <groupId>com.google.inject</groupId> 
     <artifactId>guice</artifactId> 
    </dependency> 
    ... 
    </dependencies> 

중요한 단계는 버전을 정의 할 수없는 이러한 상황에서 다음과 같이 부모 치어에 dependencyManagement를 사용한다 . 이 경우 종속성 관리 블록에서 정의 된 버전이 사용됩니다. 따라서 속성 등을 정의 할 필요가 없으며 특히 버전에 대한 종속성을 정의하고 변경할 수있는 단일 지점이 있습니다.

외에도 version:update-properties 호출에서 명령 줄에서 정의 할 속성을 제한 할 수 있습니다.

+0

안녕하십니까, 답변 드리겠습니다. 를 사용하여 종속성을 다시 구성 해 보겠습니다. –

+0

이 특정 질문에 대한 대답에 동의하지만 속성 섹션을 평가하는 'use-releases'옵션이 있어야하는 것처럼 보입니다. 'update-properties' 목표가 있다는 사실은 이것이 사용 된 패턴임을 나타냅니다. 필자는 멀티 모듈이 아닌 프로젝트에서이 패턴을 사용하여 모든 버전을 중앙 위치에 유지합니다. 예를 들어, 완전히 다른 프로젝트에서 여러 전쟁의 귀를 만드는 pom이 있습니다. 그래서 버전을 맨 아래에 속성으로 유지합니다. – Snekse