2012-08-13 3 views
1

메인 프로젝트가 하위 모듈에 의존하는 다중 모듈 maven 프로젝트가 있습니다. 하위 모듈의 모든 종속성은 다음과 같은 버전으로 정의됩니다. ${pom.version}. 나는 maven release 플러그인을 사용한다. 내가 릴리스를 준비하려고하면, 하위 모듈의 누락 버전에 대한 오류가 있습니다.다중 모듈 응용 프로그램 maven

예 :

주요 치어 버전 1.0에, 나는 그것을 해제하려고합니다. 메이븐 (Maven)은 모든 서브 모듈을 버전 1.1으로 빌드 한 다음, 상위 빌드를 시도한 다음 충돌합니다. sub-module-1.1을 찾을 수 없기 때문입니다.

나는 메이븐에게 빌드하는 법을 알지 못한다. 그리고 빌드하는 모든 서브 - 모듈 마녀를 로컬 - 레포에 즉시 설치한다. 나는 maven2를 사용한다.

내 치어 :

<modelVersion>4.0.0</modelVersion> 

<groupId>com.voncuver</groupId> 
<artifactId>voncuver</artifactId> 
<packaging>pom</packaging> 
<version>1.1-SNAPSHOT</version> 
<name>multimodule</name> 

<modules> 
    <module>mod1</module> 
    <module>mod2</module> 
</modules> 

(...) 

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <artifactId>mod1</artifactId> 
      <groupId>com.voncuver</groupId> 
      <version>${pom.version}</version> 
     </dependency> 
     <dependency> 
      <artifactId>mod2</artifactId> 
      <groupId>com.voncuver</groupId> 
      <version>${pom.version}</version> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 
(...) 
+0

명시 적으로 각 하위 모듈의 버전을 $ {pom.version}으로 설정합니까? 버전 속성은 부모로부터 상속됩니다 ... –

+3

먼저 pom (발췌는 ok입니다)을 게시 할 수 있습니다. pom.version을 더 사용하지 마십시오. project.version – khmarbaise

+1

릴리스 플러그인은 반응기 내에서 종속 버전을 자동으로 업데이트합니다. 그래서 실제로 $ {project.version}을 참조 할 필요가 없습니다. @khmarbaise는 $ {pom.version}이 $ {project.version}을지지하여 더 이상 사용되지 않습니다. –

답변

1

당신은 아마 당신의 프로젝트 구조의 좀 더 게시해야하지만, 일반적으로 멀티 모듈 프로젝트는 다음과 같습니다

project 
    mod1 
    mod2 
    mod3 
    pom.xml 

주요의 pom.xml는 것 " pom "포장 유형을 선택하고 다른 모든 것을 만들 수있는 섹션이 있습니다.

<packaging>pom</packaging> 
<modules> 
    <module>mod1</module> 
    <module>mod2</module> 
    <module>mod3</module> 
</modules> 

N, 가장 확실한 방법은 확실히 일을 제대로 실행하는 것이다 구축 만들기 위해 : 깨끗한

MVN을하지 않고

을 설치는 일이 받는다는 반응기에서 발견되지 않을 가능성이 매우 가능 "설치" 특히 사용중인 Maven의 버전 (및 몇 가지 다른 요인)에 따라 다릅니다.

+0

OP는 'maven -release-plugin'을 사용하면'mvn install'을 실행하는 것보다 훨씬 복잡합니다. 나는이 질문이 분명하지 않기 때문에이 답변이 많은 도움이 될 것이라고 확신하지 못합니다. 지금 내가 downvote, 미안하겠습니다 ... – maba

+0

@ maba 내 포인트 그 릴리스 플러그인 또는 아니, 그 누구도 어떤 도움을주기 위해 그의 프로젝트 구조에 대한 정보가 충분하지 않습니다. 나는 상대적으로 "표준"이 아닌 경우 구조가 어떻게 보일지 제안했습니다. – Matt

+0

'mvn release : perform'을 실행하면 미리 정의 된 Maven 단계'mvn deploy'가 실행되어'mvn install'이 자동으로 실행됩니다. – yorkw