Whiteship's Note


Managed Depedency 네 녀석의 정체를 드디어 알았다.

Build/Maven : 2008.04.17 14:59


참조:
http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism
http://maven.apache.org/ref/current/maven-model/maven.html#class_dependencyManagement

이 녀석의 정체는... depedency 정보(버전, Scope, 추이성)을 한 곳에 정리해둔=MANAGED 의존성=Denpendency을 사용하겠다는 것입니다. Maven 2.0.9에 추가된 import managed dependency는 바로 이 managed dependency에 관한 내용입니다.

이전에는 상속을 통해서 managed dependency를 이용할 수 있었습니다.

그런데 단일 상속만 되기 때문에 managed dependency를 사용하고 싶은 프로젝트가 여러 개일 때는 import scope을 이용해서 상속이 아닌 위임delegation을 사용해서 여러 개의 프로젝트를 import scope으로 dependencyManagement에 추가해두면, 해당 프로젝트들이 가지고 있는 managed dependency를 사용할 수 있습니다.

이 개념을 이해하기 위해.. 거의 삼일간 고생했네요.

처음에는

<dependencies>
  <dep..cy>
     ..
  </dep..cy>
  <dep..cy>
    ..
  </dep..cy
  ..
</dependencies>

이거랑

<dependencyManagement>
<dependencies>
  <dep..cy>
    ..
  </dep..cy>
  <dep..cy>
   ..
  </dep..cy
  ..
</dependencies>
</dependencyManagement>

이거랑 별 차이가 없는 건 줄 알았는데...

엄청나게 많은 차이가 있었습니다.
top

Write a comment.


Managed dependency는 무슨 뜻인가요?

Build/Maven : 2008.04.14 21:43


스프링 DM을 읽다가도 managed destroy라는 단어를 보고.. 이게 무슨 말인가 곰곰히 생각을 한 적이 있었는데요. 오늘도 저 단어를 만나서 고생을 했습니다. Maven 2.0.9에 새로 추가된 import managed dependency를 적용해보려고 했는데, 한바탕 Maven 지옥에 들락거리다 지쳐서 오늘은 실패를 기록하고 이만 집에 들어가려고 합니다.

Managed Dependency 넌 대체 무엇이니?
As an example, consider the following projects:

   1. ThirdParty 1.0 - contains declarations of third party jars.
   2. Project A 1.0 - A project that uses declarations in ThirdParty and produces some number of versioned artifacts.
   3. Project B 1.0 - A project unrelated to Project A. It also uses declarations in ThirdParty and produces some number of versioned artifacts.
   4. Project C 1.0 - Has dependencies on ThirdParty, Project A, and Project B.

In Maven 2 it is not possible for Project C to use the managed dependencies from both A and B since neither has any direct relationship to the other.
참조: http://docs.codehaus.org/display/MAVEN/Importing+Managed+Dependencies

이게 무슨 이야기인지 이해가 안 되고 있습니다.

C가 A랑 B를 dependency에 추가하면, A와 B가 사용하는 dependency들도 C에 추가되어서 C프로젝트에서도 사용할 수 있는데, 대체 MD가 뭐길래.. C에서 사용하는게 불가능한 걸까요.
top

Write a comment.