2010-02-03 2 views
12

Maven 2.2.1의 자식 프로젝트에서 (부모) pom.xml의 의존성을 상속 받고 싶습니다. 즉 프로젝트 상속을 사용합니다. 이 경우 기본 포장 유형을 jar에서 pom으로 변경해야합니다.프로젝트 집계 (멀티 모듈)를 사용하지 않을 때 패키징 유형 'pom'이 필요합니까?

그러나 the Maven2 documentation 상태는 포장 유형 pom 즉 서브 모듈을 사용하여 멀티 모듈 프로젝트가 아닌 프로젝트 상속, 프로젝트 통합에 필요한 것을하지 않는 이유는 무엇입니까? 다음 항목으로, 다른 한편

Project ID: example:example-child 

Reason: Parent: example:example-parent:jar:1 
of project: example:example-child has wrong packaging: jar. 
Must be 'pom'. for project example:example-child 

: 위의 구성으로 메이븐 (예를 mvn clean) 호출하면

<project> 
<modelVersion>4.0.0</modelVersion> 
<groupId>example</groupId> 
<artifactId>example-parent</artifactId> 
<version>1</version> 

<dependencies> 
    <dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.14</version> 
    </dependency> 
</dependencies> 
</project> 

<project>  
<parent> 
    <groupId>example</groupId> 
    <artifactId>example-parent</artifactId> 
    <version>1</version> 
</parent> 

<modelVersion>4.0.0</modelVersion> 
<groupId>example</groupId> 
<artifactId>example-child</artifactId> 
</project> 

는, 당신은 오류가

<project> 
... 
<packaging>pom</packaging> 
... 
</project> 

부모 pom.xml에 Maven을 오류없이 실행할 수 있습니다.

Maven의이 동작이 올바른가요? POM ReferenceInheritance 섹션에 설명 된대로

답변

10

: 그래서 Maven의 행동이 나에게 올바른 것

The packaging type required to be pom for parent and aggregation (multi-module) projects.

(및 오류 메시지가 잘 자기 설명이다).

0

파스칼에서 언급했듯이 올바른 동작입니다.

모듈 간 종속성을 공유하는 방법을 찾고 있다면 문제의 종속성을 pom에 묶어서 모듈이 새로운 "종속성"에 의존하게하는 것을 고려할 수 있습니다.

자세한 내용은 Maven Book Section 3.6.1을 참조하십시오.

2

종속성을 상속 받기를 원한다면 'pom'유형 일 필요는 없다고 생각합니다. 당신은 그것을 jar로 가질 수 있고 당신이 가지고있는 프로젝트의 종속물로 간단하게 지정할 수 있습니다. 그러나 당신은 부모 프로젝트가 'pom'이 아닌 다른 타입이되는 것을 막는 부모/자식 관계를 가지지 않을 것입니다.

명확하게 말하면 모든 종속성의 종속성 (전이 종속성)을 상속받습니다.