Я опубликовал несколько библиотек, используя sbt publishLocal
, он работал и был опубликован в моем ~/.ivy2/local
каталоге.
У меня есть проект, который зависит от этих библиотек, но sbt update
не может их найти.
В частности, мой проект имеет следующие зависимости:
lazy val myDependencies = commonDependencies ++ Seq(
"my.corp" %% "lib1" % "1.0.1-SNAPSHOT" withSources () withJavadoc (),
"my.corp" %% "lib2" % "2.0.2-SNAPSHOT" withSources () withJavadoc ()
)
sbt update
имеет эту ошибку:
[error] (services / update) lmcoursier.internal.shaded.coursier.error.FetchError$DownloadingArtifacts: Error fetching artifacts:
[error] file:////home/myuser/.ivy2//local/my.corp/lib1_2.12/1.0.1-SNAPSHOT/jars/lib1.jar: not found: /home/myuser/.ivy2//local/my.corp/lib1_2.12/1.0.1-SNAPSHOT/jars/lib1.jar
[error] file://///home/myuser/.ivy2//local/my.corp/lib2_2.12/2.0.2-SNAPSHOT/jars/lib2.jar: not found: /home/myuser/.ivy2//local/my.corp/lib2_2.12/2.0.2-SNAPSHOT/jars/lib2.jar
когда я смотрю в каталог, я вижу опубликованные банки, но к их имени добавлена версия scala, поэтому разрешить update
не удастся, я думаю:
$ ls /home/myuser/.ivy2/local/my.corp/lib1_2.12/1.0.1-SNAPSHOT/jars
lib1_2.12.jar lib1_2.12.jar.md5 lib1_2.12.jar.sha1
$ ls /home/myuser/.ivy2/local/my.corp/lib2_2.12/2.0.2-SNAPSHOT/jars
lib2_2.12.jar lib2_2.12.jar.md5 lib2_2.12.jar.sha1
Если я опубликую sh в репо по-настоящему, я смогу разрешить библиотеки.
Кто-нибудь знает заклинание sbt, чтобы это исправить? ; -)
Приветствия Карл
Обновление: - Я думаю, что проблема в coursier, не знаю, как заставить его искать файл lib2_2_12.jar. Может ли это иметь плохую кешированную ссылку?
Caused by: lmcoursier.internal.shaded.coursier.cache.ArtifactError$NotFound: not found: /home/myuser/.ivy2/local/my.corp/lib2_2.12/2.0.2-SNAPSHOT/jars/lib2.jar
Обновление: - отключение обработчика coursier с помощью REPL sbt. Я могу запустить
sbt:my-project> set ThisBuild / useCoursier := false
, а затем
sbt:my-project> update
, и это сработало, но установка его на истинное обновление снова не удалась, поэтому это выглядит как проблема с курьером.
Обновление: Сработал извлечение из командной строки! !
coursier fetch my.corp::lib1:1.0.1-SNAPSHOT --no-default -r central -r ivy2Local
загрузил транзитивные зависимости и обнаружил мой jar в моем локальном каталоге ivy2
, так что это похоже на проблему взаимодействия с sbt-coursier