나는 일반적으로 동일한 부모 pom에 의존하는 몇 가지 프로젝트에서 작업하는이 상황에 있습니다. 우리는 부모 pom의 dependencyManagement 섹션에서 모든 종속성 버전 및 제외를 처리합니다. 자식 poms는 필요한 종속성을 지정하지만 부모의 버전을 사용합니다.
항아리에 제외를 배치하면 일반적으로 다른 곳에서 해당 항아리의 다른 버전을 얻고 싶기 때문입니다 (일반적으로 우리가 의존하는 다른 항아리).
그러나 문제가 발생했습니다. 부모에 jar C의 다른 버전에 의존하는 두 개의 jar A와 B가 있다고 가정 해 보겠습니다. 자식 프로젝트에서 작업하는 사람은 jar A와 B가 모두 필요할 수 있으며 jar B에서 jar C를 제외하고 부모로 이동할 수 있습니다. 그들을 위해 잘 작동 할 수 있습니다. 그러나 다른 자식 프로젝트에서 작업하는 다른 사람은 jar B에만 의존 할 수 있으며 이제는 jar C를 잃어 버려 최신 부모 코드를 선택한 후 런타임에 프로젝트에서 NoClassDefFoundError가 발생할 수 있습니다. 나중에 다른 자식 프로젝트에서 작업하면서 jar B (단지 A가 아님)가 필요하다고 결정하여 jar B를 추가합니다.주의를 기울이지 않으면 jar에 필요한 jar C가 없다는 사실을 깨닫지 못할 수 있습니다. B. 런타임에 NoClassDefFoundError가 발생할 수 있습니다.
보시다시피 jar A와 jar B가 모두 필요한 자식 프로젝트는 괜찮지 만 jar B 만 필요한 자식 프로젝트도 jar C를 pom에 추가하는 것을 기억해야합니다.
자식 pom에서만 제외하는 것이 더 나은 습관입니까? 아니면 계속해서 부모 pom에서 제외를 시도하고 제외를 자세히 살펴보고 필요에 따라 자식 pom에 추가 종속성을 추가해야합니까? 감사!
dependencyManagement
제외 (범위 아님)가 아닌 버전에 대해서만 상위에서 사용 합니다. 자신을 지적했듯이 부모에 제외를 추가하면 다른 개발자 (그리고 나중에 자신도)가 왜 필요하고 예상되는 전 이적 종속성을 얻지 못하는지 혼란스러워하는 상황이 발생할 수 있습니다.
에 관해서:
항아리에 제외를 배치하는 것은 일반적으로 다른 곳 (일반적으로 우리가 의존하는 다른 항아리)에서 해당 항아리의 다른 버전을 가져 오기를 원하기 때문입니다.
여기에 제공하는 이유에 대한 제외를 피하기 위해 부모 pom에서 이러한 전 이적 종속성에 대해 올바른 버전을 적용 할 수 있습니다. 단점은 물론 종속 라이브러리의 버전을 업데이트 할 때 해당 버전을 업데이트해야한다는 점을 기억해야합니다. 이것이 우리가 200 개 이상의 poms로 프로젝트를 관리하는 방법이며, 모든 종속성의 올바른 버전을 얻기 위해 제외 항목을 추가 할 위치를 찾는 것보다 훨씬 낫다고 말해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다