2017-11-14 2 views
1

프로젝트 구조를 모듈화해야합니다. 이를 위해 우리는 처음부터 Build-Management-System Maven을 사용하고 있습니다. 프로젝트는 내부 라이브러리를 사용합니다. 우리는 Maven의 의존성 Managent의 이점을 사용하고 거기에 정의 된 하나의 버전으로 모든 사용 된 내부 라이브러리를 오버라이드하고 싶습니다. 내 질문은 매우 간단하지만 분명하지 않습니다. 어쩌면 당신이 저를 도울 수 있습니다.Maven - 의존성 관리 사용

두 가지 유형의 모금이 있습니다.

(1) Parent.pom은 -> 설정 버전에 대한 자리 표시 자와

(2) Child.pom 그들에게 정의 -> 빌드하고 어떤 장소

모든 프로젝트에 모듈을 복사하는 것은에서 자식 (2).

내 질문은 : 종속성 관리를 배치하는 가장 좋은 장소는 어디입니까? parent.pom 또는 child.pom에 있습니까? parent.pom에서 depManagement를 사용하면 프로젝트의 종속성에서 버전 태그를 제거 할 수 없다는 것을 알았습니다.

그럼 내 질문에, 어디에 의존성 관리를 넣을 수있는 가장 좋은 장소는 무엇입니까?

감사합니다.

답변

1

종속성 관리를 위해 BOM (bill of materials)을 사용할 것입니다. 내가 제안하는

How to use BOM file with Maven?

Maven BOM [Bill Of Materials] Dependency

구조 :

부모 프로젝트 : 당신은에서 BOM에 대한 자세한 얻을 수있는 당신이 여기에서 볼 수있는 것처럼

<groupId>bom.test</groupId> 
    <artifactId>parent</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <modules> 
     <module>childA</module>   
    </modules> 

    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-framework-bom</artifactId> 
       <version>4.3.8.RELEASE</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 

를 I 봄철 BOM을 사용했습니다.

아이 프로젝트 : 당신은 내가 스프링 웹 버전을 지정하지 않은 아이 종속성에서 보듯

<parent> 
     <artifactId>parent</artifactId> 
     <groupId>bom.test</groupId> 
     <version>1.0-SNAPSHOT</version> 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 

    <artifactId>childA</artifactId> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>3.0.0.RELEASE</version> 
     </dependency> 
    </dependencies> 

, 그것은 BOM에서 가져옵니다. 그러나 스프링 테스트 버전이 지정되었습니다. 메이븐이 어떻게 보는지 확인해 봅시다.

mvn help:effective-pom 

..... 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>4.3.8.RELEASE</version> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>4.3.8.RELEASE</version> 
     </dependency>  
    </dependencies> 
    </dependencyManagement> 
..... 

에 의해

확인 BOM의 콘텐츠 그래서 BOM 버전은 4.3.8

이의이 moduleA 웹이 버전을 사용하는지 확인 및 테스트 재정의 (override) 할 종속 Managment를을 확인하자입니다.

mvn dependency:tree 

[INFO] bom.test:childA:jar:1.0-SNAPSHOT 
[INFO] +- org.springframework:spring-web:jar:4.3.8.RELEASE:compile 
[INFO] | +- org.springframework:spring-aop:jar:4.3.8.RELEASE:compile 
[INFO] \- org.springframework:spring-test:jar:3.0.0.RELEASE:compile