Whiteship's Note

'managed dependency'에 해당되는 글 1건

  1. 2008.04.17 기본적인 managed dependency 사용법 (2)

기본적인 managed dependency 사용법

Build/Maven : 2008. 4. 17. 15:22


사용자 삽입 이미지


A BOM은 오타가 아닙니다. Bill Of Material 이라는 뜻입니다. B POM은 그냥 보통의 POM 입니다. 위의 경우 A BOM(얘도 결국은 packing이 POM입니다.)을 B POM이 상속 받고 있습니다. 상속 받으면 모든 부모의 모든 속성을 자식 입장에서 사용할 수 있습니다. 따라서 A에 정의한 DM(dependecy management) 섹션도 B POM으로 상속이 됩니다.

B POM에서는 한 개의 라이브러리를 추가합니다. 그런데 버전과 스콥을 명시하지 않고 있습니다. 오호.. 이러면 안 되죠. 원래는 버전까지는 꼭 명시해줘야 합니다. 버전을 적어주지 않으면 메이븐이 종속성 추가하닥 에러 납니다. 그런데 위의 경우에는 에러가나지 않습니다. 명시한 groupId와 artifactId에 해당하는 종속성의 Bill Of Material이 DM 안에 들어있기 때문입니다. DM을 보구서.. 아항..whiteship의 a라는 라이브러리는 1.0이고 runtime scope으로 추가해야 하는 군... 이라고 알아챕니다.

이런게 언제 유용할 까요.

whiteship의 a라는 라이브러리를 runtime scope으로 참조하는 다른 프로젝트들 C POM, D POM, E POM 등이 있을 때 매번 C, D, E에도 다음과 같은 코드가 들어갈 겁니다.

<dependency>
<groupId>whiteship</groupId>
<artifactId>a</artifactId>
<version>1.0</version>
<scope>runtime</version>
</dependency>

그런데 위의 A BOM을 상속 받으면

<dependency>
<groupId>whiteship</groupId>
<artifactId>a</artifactId>
</dependency>

이렇게만 설정해 됩니다.

그런데.. Spring BOM, Hinbernate BOM, Test BOM과 같이 여러 종류의 BOM이 있으면 어떻게 해야 할까요? 단일 상속 밖에 안 되는데.. 그럼 managed dependency는 못 쓰는걸까요?

네 못 씁니다. Maven 2.0.9 이전까지는 그냥 일일히 버전과 scope 명시해 줘야 합니다. 그런데 몇일전에 2.0.9가 나왔죠. 캬캬캬. 몇일동안 끙끙 앓고있던 문제인데 풀고나니 별거 아니네요. 이론...

 이제 남은일은 이 기능을 이용해서 어떻게 효율적인 BOM과 POM을 구성하느냐 입니다.

봄폼봄폼봄폼봄폼봄폼폼폼봄봄봄폼봄폼봄봄봄폼폼
top

  1. Favicon of http://riosung.tistory.com BlogIcon 리오 2008.04.19 12:17 PERM. MOD/DEL REPLY

    BOM이 Super POM을 이야기하는건가요? ㅎㅎ 처음 보는 용어라서요~ㅋ

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.04.19 12:47 신고 PERM MOD/DEL

    아니요. BOM은 다른 POM들이 사용할 Managed Dependency를 정의한, 즉 <dependencyManagement> 섹션을 가지고 있는 POM을 표현할 때 자주 사용하는 단어입니다.

    2.0.9 이전에는 상속을 통해서만 DM을 사용할 수 있었기 때문에.. 일부 Super POM이 BOM이 될 수는 있었지만, 그렇다고 해서 모든 Super POM이 BOM이라고 할 수는 없습니다.

    2.0.9 부터는 상속을 사용하지 않고도 다른 POM의 DM 을 사용할 수 있는데, 바로 이 때 '다른 POM'을 BOM이라고 표현할 수 있습니다.

    두 문장으로 요약하자면..

    BOM is POM that has DM. So any (Super)POM can be BOM.

    캬캬캬 더 햇갈리나요.

    dependency에 대한 Bill Of Material...캬. 이름 참 잘 짓지 않나요? ㅋㅋ 원랜 ERP 용어인듯 한데 정말 잘 어울리네요.

Write a comment.