2013-06-21 5 views
4

프로젝트의 종속성 중 하나를 변경하면 sbt은 변경된 프로젝트뿐만 아니라 모든 종속성에 대한 해결책을 실행합니다. 다중 모듈 프로젝트에서 각 프로젝트에 대한 중복 된 해결책이있을 때 특히 시간이 많이 걸립니다.하나만 변경하면 sbt가 모든 종속성에 대한 해결책을 만드는 이유는 무엇입니까?

왜 sbt가 이러한 중복 해상도를 만드는가? 해상도를보다 지능화 할 수있는 방법이 있습니까?

+2

종속성이 변경되면 잠재적으로 새 버전도 종속성으로 변경 될 수 있습니다. 유일하게 안전한 작업은 전체 종속성 트리를 다시 만드는 것입니다. (동적 종속성을 만드는 것이 잊지 마라. 아이비가 의존성의 최신 개정판이 무엇인지 파악하기 위해 저장소를 강제로 다시 검사하도록 강제 할 것이다.) –

답변

1

주된 이유는 SBT가 충돌을 해결해야하기 때문입니다.. 뿐만 아니라 아이비는 -SNAPSHOT 의존성을 자주 해결해야 최신 정보를 얻을 수 있습니다. 이는 기본적으로 sbt가 maven에서 사용하는 "가장 가까운"충돌 해결 관리자가 아니라 "최신"충돌 해결 관리자를 사용하기 때문입니다. 내 경험상, 이것은 인공물 버전에 대한 문제를 줄입니다. 그러나 Mark가 말했듯이 전체 dep 트리를 다시 만들 것입니다.

sbt의 모든 해상도가 아이비로 위임됩니다. 더 지능적으로 만들려면 Ivy 용 후크를 작성하거나 종속성 관리 라이브러리 sbt 사용을 바꿔야합니다. 이 해결책의 경우, 수행 할 수있는 유일한 방법은 캐시 된 이슈 정보를 복원하는 데 걸리는 시간을 줄이는 방법으로 캐시를 개선하는 것입니다.

관련 문제