Sbt запускает на проекте scala компилятор, интерпретатор и зависимости устанавливаются локально для проекта? - PullRequest
0 голосов
/ 19 марта 2020

Если я прав, Scala обычно устанавливается sbt для каждого из ваших Scala проектов, а не для всей системы.

Я создал простой пример:

sbt new scala/hello-world.g8

Когда я запускаю sbt run в проекте Scala sbt, я видел несколько созданных локальных каталогов, например target.

Что sbt run устанавливает и где?

  • Устанавливает ли он scala компилятор и scala и интерпретаторы байт-кода где-то?
  • Устанавливает ли где-нибудь зависимости? Когда проект sbt зависит от очень больших зависимостей, например, Spark, sbt run устанавливает их локально в проект? (рассмотрите, когда есть много приложений Spark, и установка Spark lcally для каждого приложения не кажется хорошей идеей.)

Спасибо.

1 Ответ

5 голосов
/ 19 марта 2020

sbt run устанавливает их локально в проект?

sbt восстанавливает зависимости, используя Coursier начиная с 1.3.0

sbt 1.3.0+ использует Coursier для реализации управления зависимостями. До версии 1.3.0 компания sbt использовала Apache Ivy в течение десяти лет.

для центрального хранилища на вашем локальном компьютере. Мы можем показать каталог кэша Coursier, выполнив

csrCacheDirectory

, который на моей машине дает

/Users/mario_galic/Library/Caches/Coursier/v1

Следовательно, зависимости не установлены для каждого проекта в каталоге, локальном для проэкт. Эти зависимости извлекаются удаленно только один раз для каждой версии зависимости в первый раз, когда какой-либо проект требует этого, а затем все другие проекты, которые зависят от этой же версии, извлекают ее из локального кэша.

В print полный путь к классу, используемый sbt run execute

show runtime:fullClasspath

, который выводит что-то вроде

sbt:scala-runner-classpath> show runtime:fullClasspath
[info] * Attributed(/Users/mario_galic/code/stackoverflow/scala-runner-classpath/target/scala-2.13/classes)
[info] * Attributed(/Users/mario_galic/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.1/scala-library-2.13.1.jar)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...