2013-05-09 7 views
28

어떻게 Maven 순환 종속성을 해결할 수 있습니까? A가 부모 프로젝트이고 B와 C가 자식 프로젝트라고 가정합니다. B가 C에 종속적이고 C가 B에 종속되어있는 경우 다른 프로젝트를 갖는 것 이외의 순환 종속성을 해결할 수있는 방법이 있습니까?Maven 순환 종속성을 해결하는 방법

미리 감사드립니다. 포럼에서 검색했지만 정확한 해결책을 얻을 수 없습니다. 어떤 가능성이 있는지 알려 주시기 바랍니다.

+1

당신은 새로운 프로젝트를 만드는 것을 배제했습니다. 그것은 내가하고 싶은 일입니다 ... 당신이 그렇게하고 싶지 않은 이유는 무엇입니까? 그것은 최상의 해결책이 될 것입니다. – NilsH

답변

19

Maven은 프로젝트간에 순환 종속성을 허용하지 않습니다. 그렇지 않으면 먼저 빌드 할 프로젝트가 명확하지 않기 때문입니다. 따라서이주기를 제거해야합니다. 한 가지 해결책은 이미 언급 한 것과 다른 프로젝트를 만드는 것입니다. 이것이 도움이 될 때 다른 클래스는 B에서 C로 또는 C에서 C로 일부 클래스를 이동하는 것입니다. 또는 두 개를 가질 필요가없는 경우 프로젝트 B와 C를 하나의 프로젝트에 병합하는 것이 올바른 경우도 있습니다.

그러나 프로젝트가 서로 의존하는 이유를 알지 않고 분석하지 않으면 최상의 솔루션을 제안하기가 다소 어려울 수 있습니다.

따라서 JDepend 또는 InteliJ 분석 도구와 같은 도구를 사용하여 문제가있는 클래스를 찾고이를 기반으로 소프트웨어에 대한 더 나은 디자인을 찾을 수 있습니다.

대부분의 경우 인터페이스 모듈과 구현 모듈과 같은 것을 만들어 대부분의 사이클을 제거합니다.

6

새 프로젝트를 만드는 것은 실제로 하나의 솔루션입니다.

종속성 반전이 두 번째 가능한 솔루션입니다.

비주기 의존성 원리는 here을 참조하십시오.

here (종속성 반전 원리).

관련 문제