내 클래스 경로에는 간접적 인 종속성의 두 가지 버전이 포함되어 있으며 그 이유를 이해할 수 없습니다.Ivy Indirect Dependency Listed 두 번
내 하위 프로젝트 ("myJar")는 "lib-subprojA"에 의존하는 "utils"하위 프로젝트에 따라 다릅니다. 나는이 모든 프로젝트에 대한 코드를 가지고 있지만 독점적이므로 스 니펫을 게시 할 수 없습니다.
myProject-myJar -> myProject-utils -> lib-subprojA
lib-subprojA에서 변경했습니다. 변경 전의 마지막 버전은 0.0.100-SNAPSHOT이었습니다. 내 변경 사항이 포함 된 버전은 0.0.101-SNAPSHOT입니다. "myProject-myJar"의 클래스 경로를 보면 "lib-subprojA-0.0.100-SNAPSHOT.jar"(이전 버전)과 "lib-subprojA-0.0.101-SNAPSHOT.jar"(최신 버전). 둘 다 classpath에 있는지 모르지만 이전 버전의 "lib-subprojA"를 사용하기 때문에 "myProject-myJar"를 컴파일 할 수 없습니다.
Eclipse (IvyDE 사용) 및 sbt (sbt clean update compile
)에서 발생합니다. 리프 프로젝트 ("myProject-myJar")를 해결하는 동안 동일한 JAR ("lib-subprojA", 버전 0.0)의 두 가지 버전을 가져 오는 동안 왜 중간 프로젝트 ("myProject-utils")를 해결하면 올바른 종속성을 생성하는지 잘 모릅니다. .100, 0.0.101).
중간 해상도 결과가 캐시되기 때문에 이것이 가능합니까? 그렇다면 어떻게 캐시를 삭제할 수 있습니까?
lib-subprojA // Made change here. Old version: 0.0.100; new: 0.0.101
lib-subprojB
myProject-utils: dependency ... name="lib-subprojA" rev="0.0.+" conf="compile->compile(*),master(*);runtime->runtime(*)"
resolves to: lib-subprojA-0.0.101-SNAPSHOT.jar
myProject-myJar: dependency ... name="myProject-utils" rev="0.0.+" conf="compile->compile(*),master(*);runtime->runtime(*)"
resolves to: lib-subprojA-0.0.100-SNAPSHOT.jar, lib-subprojA-0.0.101-SNAPSHOT.jar
캐시를 비우려면'rm -rf ~/.ivy2/cache'를 사용할 수 있습니다. 또한'~/.ivy2'에'local' 폴더가 있습니다.이 폴더는'sbt publishLocal'을 사용하여 발행 된 libs도 저장합니다. 또한 프로젝트의 종속성 그래프를 볼 수있는 유용한 도구 (여기) (https://github.com/jrudolph/sbt-dependency-graph)가 있습니다. – Eric
~/.ivy2에서 캐시를 삭제했습니다. 문제가 남아 있습니다. 나는 0.0.100 버젼의 버젼이 제거되기를 희망하는'lib-subprojA' (코드 변경없이)의 수많은 빌드조차했다. 이제 버전 0.0.100 (이전, 좋지 않음) 및 0.0.112 (최신)에 종속됩니다. – radumanolescu