2012-11-14 2 views
4

에 내 모든 프로젝트는 다음과 같이 정의 부모 치어를 가지고 프로젝트를 빌드합니다.Maven은 모든 순서

그래서 mvn install -f parent/pom.xml 명령을 실행할 때 아무 것도하지 않습니다.

전체 프로젝트를 구축 할 수있는 다른 방법이 있습니까 주문시 모든 POM을 만들 수 있습니까?

"순서대로"란 "종속성 순서대로 작성 됨"을 의미합니다. 여러 프로젝트가 다른 프로젝트에 의존하기 때문에 우리는 알파벳순으로 각 프로젝트를 구축 할 수 없습니다.

+1

부모님의 부모님 께 모듈을 지정하지 않으시는 이유는 무엇입니까? 귀하의 부모 pom에 지정하고 모든 것이 순서대로 이루어집니다 –

+0

이것이 유일한 방법 인 경우,이 설명을 답안 상자로 옮기십시오. –

답변

13

하면 (pom로 정의 <modules> 요소와 POM 및 <packaging>)는 반응기 POM 다음 모듈 의존성 순서로 내장 될 것이다있는 경우. 이 순서는 모듈이 pom에 지정된 순서와 관계없이 발생합니다.

이 접근 할 수있는 몇 가지 방법이있다 : 1

귀하의 원자로 치어가 부모의 치어와 같은 치어 할 필요는 없습니다

옵션. 그래서 당신은 할 수 :이 경우

project/pom.xml   # Reactor pom with <modules> element 
project/parent/pom.xml # Parent pom 
project/module-a/pom.xml # Some module 'a' 
project/module-b/pom.xml # Some module 'b' 

을, 원자로 치어가 포함

<modules> 
    <module>parent</module> 
    <module>module-a</module> 
    <module>module-b</module> 
</modules> 

당신의 부모 치어를 구축 할 것입니다 최상위 수준에 mvn install을 실행하고, 의존성 순서로 두 개의 모듈.

옵션 2

디렉토리를 pom으로 부모를 이동하고 부모 치어 및 원자로 치어 모두로 사용

, 그래서 당신의 프로젝트에서이

project/pom.xml   # Parent/Reactor pom with <modules> element 
project/module-a/pom.xml # Some module 'a' 
project/module-b/pom.xml # Some module 'b' 

모듈 섹션처럼 보이는 그것은 당신의 부모 치어를 구축 할 것입니다 최상위 수준에 mvn install를 실행, 다시이

<modules> 
    <module>module-a</module> 
    <module>module-b</module> 
</modules> 

과 같을 것이다 , 두 모듈은 종속 순서로 나열됩니다.

옵션 3

는 당신의 부모 치어를 남겨 및 모듈 섹션을 추가하십시오를 구축 할 것입니다 -f 부모/pom.xml 파일을 설치 MVN 실행,이 경우

<modules> 
    <module>../module-a</module> 
    <module>../module-b</module> 
</modules> 

을 상위 pom 및 두 모듈을 종속 순서로 나열합니다.

결론

나는 일반적으로 옵션 2를 사용 그것은 가장 받는다는 자체에 사용되는 패턴, 그리고 내가 너무 멀리 널리 이해되고 테스트되는 '명당'에서 길을 잃지 않도록하려고합니다.

자세한 내용은 Guide to Working with Multiple Modules을 참조하십시오.

+0

좋은 답변입니다. 그가 ' ../module-a'을 사용하는 방법을 보여준 부분은 제가 정말로 도움이 필요한 부분이었습니다. –

1

빌드 중 자동으로 프로젝트 간의 종속성을 해결할 수있는 다른 방법은 없습니다.

종속성을 해결할 수있는 방법은 빌드를 수행해야하는 순서를 지정하는 것입니다. 부모 POM에 모듈 섹션을 작성하십시오.

<modules> 
     <module>Proj A to Build/module> 
     <module>Proj B dependent or Proj A</module> 
    </modules> 
관련 문제