首页 > 解决方案 > 项目上的“sbt run”是否会在项目本地安装 scala 编译器、解释器和依赖项?

问题描述

如果我是正确的,Scala 通常由 sbt 为您的每个 Scala 项目安装,而不是在系统范围内安装。

我创建了一个简单的示例:

sbt new scala/hello-world.g8

当我sbt run在 Scala sbt 项目上运行时,我看到创建了几个本地目录,例如target.

安装什么sbt run以及在哪里?

谢谢。

标签: scalaapache-sparksbt

解决方案


sbt run 是否将它们本地安装到项目中?

sbt从 1.3.0开始使用 Coursier 解决依赖关系

sbt 1.3.0+ 使用 Coursier 来实现依赖管理。直到 sbt 1.3.0,sbt 已经使用 Apache Ivy 十年了。

到本地计算机上的中央存储库。我们可以通过执行显示 Coursier 缓存目录

csrCacheDirectory

在我的机器上给出

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

因此,依赖项不会按项目安装在项目本地的目录中。这些依赖项在某个项目第一次需要它时,每个版本的依赖项仅远程获取一次,然后依赖于同一版本的所有其他项目从本地缓存中获取它。

打印执行使用的完整类路径sbt run

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)

推荐阅读