2017-04-27 3 views
2

jar 파일로 종속성을 추가하려고하는데 jar 파일이 실행하는 데 필요한 모든 클래스와 함께 제공됩니다.파일 종속 관계와 Maven 중앙 종속성 사이의 Java 충돌 Gradle

compile files('lib/org.hl7.fhir.igpublisher.jar') 

이와 함께, 종속성으로 추가되는 몇 가지 종속성이 있습니다.

compile ("ca.uhn.hapi.fhir:hapi-fhir-base:2.3") 

는 지금은 같은 클래스가 다른 버전과 함께 제공 되었기 때문에 계급 갈등에 관련된 많은 문제에 직면하고있다.

이상적인 경우 어떻게이 문제를 해결해야합니까? 로컬 항아리는 항상 자체 파일을 사용해야하며 다른 종속성은 로컬 항아리 파일을 무시해야한다고 말하고 싶습니다.

참고 : - IntelliJ 아이디어를 사용하고 있습니다.

답변

0

이것은 까다로운 문제입니다. classpath는 하나 뿐이며 동일한 클래스의 여러 버전은 해당 버전 중 하나만 표시되고 다른 버전은 숨겨 짐을 의미합니다.

일반적으로 자체 종속성이있는 "fat jars"에 대한 종속성을 선언하지 않아야합니다. 가능하다면 종속성없이 슬림 버전을 사용해야합니다 (종종 두 버전이 게시됩니다). 다른 방법이 없다면 jar 파일을 수동으로 분할하여 슬림 한 jar를 만들 수 있습니다. classpath에 대한 의존성을주의 깊게 순서대로 조종하여 구조를 제어하는 ​​것도 가능하지만, 이것은 조금 부서지기 쉽습니다.