2017-04-06 14 views
0

Recentlylibthrift 사용자 지정 포크에 따라 시작한 Finagle 라이브러리 "com.twitter" % "libthrift"으로 정의 할 수 있습니까? 정규 1 : "org.apache.thrift" % "libthrift"입니다. 두 패키지 모두 동일한 패키지에 동일한 클래스를 포함합니다.종속성 별칭을

클래스 경로를 수동으로 정리하는 것은 가능하지만 모든 개발자가 미래에 알아야 할 것, 특히 일시적인 종속성을 통해 발생할 수 있습니다.

우리는 모든 프로젝트에서 사용하고 있으며 공유 설정에 사용할 수있는 내부 SBT 플러그인을 개발했습니다. 나는 SBT에게 의존성이 별명 일 뿐이라는 교묘 한 방법을 찾고있다. 의존성 분석을하는 동안 이상적으로 두 ModuleID 모두 동일한 조직 (별칭)을 가진 것처럼 처리합니다.

답변

0

문제는 사용자의 libraryDependencies이 플러그인의 모든 재정의보다 우선한다는 것입니다. 작동 할 수있는 기능은 다음과 같습니다. allDependencies :

allDependencies := 
    allDependencies.value.map { module => 
    if (module.organization == "org.apache.thrift" && module.name == "libthrift") 
     module.copy(organization = "com.twitter") 
    else module 
    }