SBT 0.13.1 офлайн

Я пытаюсь разобраться в использовании SBT 0.13.1 в автономном режиме. Моя цель - перенести все необходимое в автономную среду на USB-накопитель. Я думал, что если скопировать кэш плюща, SBT сможет вытащить из него все, что ему нужно, но, похоже, это не так.

Например...

Я начну с удаления папки .ivy2, на всякий случай. Теперь, когда я онлайн, я использую следующие файлы build.sbt и project/plugins.sbt для создания моего проекта eclipse. из SBT 0.13.1

build.sbt:

name := "TestProject"

version := "0.0.1"

scalaVersion := "2.10.3"

libraryDependencies ++= Seq(
    "org.apache.commons" % "commons-math3" % "3.2",
    "ch.qos.logback" % "logback-classic" % "1.1.1"
)

project / plugins.sbt:

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.4.0")

На том же вычислителе я отключаюсь, и теперь sbt clean eclipse выдает множество неразрешенных ошибок зависимостей. Например.

[warn] Host repo1.maven.org not found. url=http://repo1.maven.org/maven2/org/scala-lang/scala-library/2.10.3/scala-library-2.10.3.pom
[info] You probably access the destination server through a proxy server that is not well configured.
[warn]  module not found: org.scala-lang#scala-library;2.10.3
[warn] ==== local: tried
[warn]   /home/user/.ivy2/local/org.scala-lang/scala-library/2.10.3/ivys/ivy.xml
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/org/scala-lang/scala-library/2.10.3/scala-library-2.10.3.pom
[info] Resolving ch.qos.logback#logback-classic;1.1.1 ...
[warn] Host repo1.maven.org not found. url=http://repo1.maven.org/maven2/ch/qos/logback/logback-classic/1.1.1/logback-classic-1.1.1.pom
[info] You probably access the destination server through a proxy server that is not well configured.
[warn]  module not found: ch.qos.logback#logback-classic;1.1.1
[warn] ==== local: tried
[warn]   /home/user/.ivy2/local/ch.qos.logback/logback-classic/1.1.1/ivys/ivy.xml
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/ch/qos/logback/logback-classic/1.1.1/logback-classic-1.1.1.pom
[info] Resolving org.scala-lang#scala-reflect;2.10.3 ...
[warn] Host repo1.maven.org not found. url=http://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.10.3/scala-reflect-2.10.3.pom
[info] You probably access the destination server through a proxy server that is not well configured.
[warn]  module not found: org.scala-lang#scala-reflect;2.10.3
[warn] ==== local: tried
[warn]   /home/user/.ivy2/local/org.scala-lang/scala-reflect/2.10.3/ivys/ivy.xml
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.10.3/scala-reflect-2.10.3.pom
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.scala-lang#scala-library;2.10.3: not found
[warn]  :: ch.qos.logback#logback-classic;1.1.1: not found
[warn]  :: org.scala-lang#scala-reflect;2.10.3: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::

Неужели при работе в автономном режиме убрать невозможно?

Я заметил, что SBT ищет в .ivy2/local, но такой папки нет. Только '.ivy2 / cache'.

Обновление:

Предложение добавить .ivy2 / local не сработало. Это дает много исключений MalformedURLException

[warn]  :: org.scala-lang#scala-library;2.10.3: ivy2 cache: unable to get resource for org/scala-lang#scala-library;2.10.3: res=/home/user/.ivy2/cache/org/scala-lang/scala-library/2.10.3/scala-library-2.10.3.pom: java.net.MalformedURLException: no protocol: /home/user/.ivy2/cache/org/scala-lang/scala-library/2.10.3/scala-library-2.10.3.pom

Он ищет каталог org / scala-lang и т.д., но каталоги в кеше имеют форму org.scala-lang

Обновление 2

Похоже, проблема связана с каким-то взаимодействием с логбэком. Я создал более четкую версию своего вопроса здесь и принимаю ответ, который указал, что это «должно» выйти из коробки.


person Pengin    schedule 11.04.2014    source источник
comment
вы пробовали set offline := true? См. Также Управление зависимостями   -  person 4e6    schedule 11.04.2014
comment
Пробовал, но без изменений. Мое понимание offline: = true заключалось в том, что это остановит постоянную проверку снимков SNAPSHOT, но я не использую никаких снимков напрямую, во всяком случае.   -  person Pengin    schedule 11.04.2014


Ответы (2)


Если вы создаете проект в интерактивном режиме, то после этого вы можете перейти в автономный режим. По сути, вам просто нужно скопировать папку ~ / .ivy2 (и, возможно, папку ~ / .sbt - не уверен) в свою среду из места, где раньше выполнялось построение и разрешение зависимостей.

Удалив цель / в проекте, а затем перейдя в автономный режим, я вижу, что это действительно приводит к разрешению ресурсов.

[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Compiling 4 Scala sources to [...]
person JasonG    schedule 11.04.2014
comment
Мне кажется, это не работает. Вы каким-либо образом меняете свою конфигурацию при выходе из сети? - person Pengin; 11.04.2014
comment
Нет. Я просто отключил Wi-Fi и перезапустил проект, построенный на sbt 0.13.1 (я часто использую brew switch sbt x.x.x). Здесь проблем не было - раньше вы его успешно строили? Возможно, есть еще один компонент, помимо этих двух папок, о котором я не знаю, но он, похоже, без проблем разрешает зависимости от кеша плюща. - person JasonG; 11.04.2014

Я не уверен, что это сработает, но полагаю, вам нужно добавить еще преобразователь в вашем Build.scala (или build.sbt) вот так:

resolvers += "ivy2 cache" at "/home/user/.ivy2/cache"

Сообщите мне, если это сработает, мне тоже интересно.

Изменить:

Я попробовал, и sbt действительно смотрит в ваш ivy2 кеш, зайдите в свой build.sbt и добавьте эту строку:

resolvers += Resolver.file("ivy2 cache", file("/path/to/your/ivy2/cache/"))(Resolver.ivyStylePatterns)

Теперь SBT тоже должен искать в этом каталоге.

person Ende Neu    schedule 11.04.2014
comment
Кажется, исправлены зависимости scala-lang. Теперь он просто сломан при входе в систему. Он выглядит с неправильным соглашением об именах logback-classic / 1.1.1 / ivys / ivy.xml вместо logback-classic / ivy-1.1.1.xml - person Pengin; 11.04.2014
comment
Я предполагаю, что это как-то связано с (Resolver.ivyStylePatterns), он добавляет часть ivys к пути, к сожалению, это всего лишь предположение. - person Ende Neu; 11.04.2014