为什么我的 sourceDirectories 设置在 sbt 中没有效果?

2023-11-23

我正在读 SBT入门指导。该页面显示sourceDirectories设置为例。为了亲自尝试,我将以下内容放入我的build.sbt文件,用于基本的“hello world”项目。

sourceDirectories in Compile := Seq(file("other"))

(附加+= or ++=也不起作用。)

我有源文件<base-dir>/other and in <base-dir>/src/main/scala. I ran sbt并输入compile。它忽略了设置:

> compile
[info] Compiling 1 Scala source to /Learning/Scala/proj1/target/scala-2.9.2/classes...
[error] /Learning/Scala/proj1/src/main/scala/hello.scala:7: not found: value Foo
[error]     println(Foo.foo)

The Foo对象定义在 foo.scala 中other源目录。

我缺少什么?


tl;dr @schleichardt 的回答是有效的 - 您需要将以下内容添加到build.sbt file:

unmanagedSourceDirectories in Compile += file("other")

解释归结为检查依赖关系compile任务。使用inspect tree compile找到他们。

[proj1]> inspect tree compile
[info] compile:compile = Task[sbt.inc.Analysis]
[info]   +-compile:compile::compileInputs = Task[sbt.Compiler$Inputs]
[info]   | +-compile:scalacOptions = Task[scala.collection.Seq[java.lang.String]]
[info]   | +-compile:sources = Task[scala.collection.Seq[java.io.File]]
[info]   | +-*/*:sourcePositionMappers = Task[scala.collection.Seq[scala.Function1[xsbti.Position, scala.Option[xsbti.Position]]]]
[info]   | +-*/*:maxErrors = 100
[info]   | +-*:compilers = Task[sbt.Compiler$Compilers]
[info]   | +-compile:compile::streams = Task[sbt.std.TaskStreams[sbt.Init$ScopedKey[_ <: Any]]]
[info]   | | +-*/*:streamsManager = Task[sbt.std.Streams[sbt.Init$ScopedKey[_ <: Any]]]
[info]   | |
[info]   | +-compile:incCompileSetup = Task[sbt.Compiler$IncSetup]
[info]   | +-*/*:compileOrder = Mixed
[info]   | +-compile:dependencyClasspath = Task[scala.collection.Seq[sbt.Attributed[java.io.File]]]
[info]   | +-compile:classDirectory = target/scala-2.10/classes
[info]   | +-*/*:javacOptions = Task[scala.collection.Seq[java.lang.String]]
[info]   |
[info]   +-compile:compile::streams = Task[sbt.std.TaskStreams[sbt.Init$ScopedKey[_ <: Any]]]
[info]     +-*/*:streamsManager = Task[sbt.std.Streams[sbt.Init$ScopedKey[_ <: Any]]]
[info]

如您所见,任务取决于compile:sources任务。任务又取决于compile:unmanagedSources任务使用compile:unmanagedSourceDirectories环境。

[proj1]> inspect tree compile:sources
[info] compile:sources = Task[scala.collection.Seq[java.io.File]]
[info]   +-compile:unmanagedSources = Task[scala.collection.Seq[java.io.File]]
[info]   | +-compile:unmanagedSourceDirectories = List(/Users/jacek/sandbox/stackoverflow/proj1/src/main/scala, /Users/jacek/sandbox/stackoverflow/proj1/src/main/java, /Users/..
[info]   | | +-compile:javaSource = src/main/java
[info]   | | | +-compile:sourceDirectory = src/main
[info]   | | |   +-*:sourceDirectory = src
[info]   | | |   | +-*:baseDirectory = /Users/jacek/sandbox/stackoverflow/proj1
[info]   | | |   |   +-*:thisProject = Project(id: proj1, base: /Users/jacek/sandbox/stackoverflow/proj1, aggregate: List(), dependencies: List(), configurations: List(compile..
[info]   | | |   |
[info]   | | |   +-compile:configuration = compile
[info]   | | |
[info]   | | +-compile:scalaSource = src/main/scala
[info]   | | | +-compile:sourceDirectory = src/main
[info]   | | |   +-*:sourceDirectory = src
[info]   | | |   | +-*:baseDirectory = /Users/jacek/sandbox/stackoverflow/proj1
[info]   | | |   |   +-*:thisProject = Project(id: proj1, base: /Users/jacek/sandbox/stackoverflow/proj1, aggregate: List(), dependencies: List(), configurations: List(compile..
[info]   | | |   |
[info]   | | |   +-compile:configuration = compile
[info]   | | |
[info]   | | +-*:baseDirectory = /Users/jacek/sandbox/stackoverflow/proj1
[info]   | |   +-*:thisProject = Project(id: proj1, base: /Users/jacek/sandbox/stackoverflow/proj1, aggregate: List(), dependencies: List(), configurations: List(compile, runt..
[info]   | |
[info]   | +-*/*:excludeFilter = sbt.SimpleFileFilter@7ced8ea7
[info]   | +-*:baseDirectory = /Users/jacek/sandbox/stackoverflow/proj1
[info]   | +-*/*:unmanagedSources::includeFilter = sbt.SimpleFilter@1beb6bba
[info]   | +-*/*:sourcesInBase = true
[info]   |
[info]   +-compile:managedSources = Task[scala.collection.Seq[java.io.File]]
[info]     +-compile:sourceGenerators = List()
[info]

The compile:unmanagedSourceDirectories设置参考“非托管源目录,其中包含手动创建的源。”

[proj1]> inspect compile:unmanagedSourceDirectories
[info] Setting: scala.collection.Seq[java.io.File] = List(/Users/jacek/sandbox/stackoverflow/proj1/src/main/scala, /Users/jacek/sandbox/stackoverflow/proj1/src/main/java, /Users/jacek/sandbox/stackoverflow/proj1/other)
[info] Description:
[info]  Unmanaged source directories, which contain manually created sources.
[info] Provided by:
[info]  {file:/Users/jacek/sandbox/stackoverflow/proj1/}proj1/compile:unmanagedSourceDirectories
[info] Defined at:
[info]  (sbt.Defaults) Defaults.scala:161
[info]  /Users/jacek/sandbox/stackoverflow/proj1/build.sbt:1
[info] Dependencies:
[info]  compile:javaSource
[info]  compile:scalaSource
[info]  *:baseDirectory
[info] Reverse dependencies:
[info]  compile:unmanagedSources
[info]  compile:sourceDirectories
[info] Delegates:
[info]  compile:unmanagedSourceDirectories
[info]  *:unmanagedSourceDirectories
[info]  {.}/compile:unmanagedSourceDirectories
[info]  {.}/*:unmanagedSourceDirectories
[info]  */compile:unmanagedSourceDirectories
[info]  */*:unmanagedSourceDirectories
[info] Related:
[info]  test:unmanagedSourceDirectories

设置是scala.collection.Seq[java.io.File]输入并将元素附加到 seq,您可以使用+= method.

话虽如此,build.sbt文件应如下所示:

unmanagedSourceDirectories in Compile += (baseDirectory / "other").value

您不必使用baseDirectory设置,但它使基目录明确。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的 sourceDirectories 设置在 sbt 中没有效果? 的相关文章

随机推荐

  • 如果在 Chrome 上运行,createObjectURL 不起作用

    大家好 我尝试从 websocket 服务器 在 NET 中 检索图像 我以字节形式发送图像 然后在客户端检索它 客户端检索代码 使用canvas和JavaScript var c document GetElementById myCan
  • 如何在通过 webpack 加载单个捆绑的 javascript 文件时显示进度条?

    问题是关于 webpack 的 将几乎所有内容打包到一个在index html中加载的bundle js后 bundle js文件大约有2M 需要几秒钟才能加载 我想显示一个进度条 指示加载进度 同时隐藏所有内容 仅启用用户交互并在加载完成
  • 如何使用 Tensorflow 对象检测 API 启用多 GPU 训练

    我正在尝试使用 TensorFlow 对象检测 API 执行多 GPU 训练 我在 NVIDIA SMI 中看到的是 实际上只使用了 1 个 GPU 提供的其他 3 个 GPU 已加载 GPU 进程 但内存使用量为 300MB 利用率始终为
  • EF 5.0 和动态连接字符串?

    现在有一件事让我抓狂 我的 数据库优先 EF Model 需要动态连接字符串 服务器的 IP 地址可能偶尔会更改 因此 在较旧的 EF 版本中 您可以通过构造函数传递连接字符串 但在 5 0 中似乎不可能 到目前为止我所读到的内容是 您可以
  • Msiexec:安装失败时自动回滚到以前的版本

    在静默模式下使用 msiexec 安装 MSI 文件时 是否可以使其自动化 以便在安装失败时回滚到以前的版本 假设安装时已经安装了较旧的应用程序版本 Yes 恢复旧的应用程序版本通过安装失败时的回滚实际上是Windows Installer
  • 创建 NSManagedObject 而不保存? [复制]

    这个问题在这里已经有答案了 可能的重复 存储但不将 NSManagedObject 保存到 CoreData 我需要创建一个 NSManagedObject 而不保存它 我该怎么做 我想这样做的原因是应用程序有一个设置 用户可以在其中输入详
  • 为什么 JAXBgenerateElementProperty=false 没有达到预期的效果?

    我正在使用以下绑定文件运行 wsimport 任务
  • Lua 中的 math.pow 替代品?

    我无法使用math pow x y in Lua 不知道为什么 提示语法错误 math sin f and math cos f 然而有效 还有其他选择吗math pow in Lua Lua s math pow 如文档所述 该函数从版本
  • 在 TabActivity 的单个选项卡中重新启动活动?

    我有一个 TabActivity 每个选项卡都指向一个子活动 这很好用 有没有什么聪明的方法来刷新活动选项卡之一 例如 我只想 重新启动 选项卡 3 中的活动 除了构建对活动本身的刷新支持 或清除所有选项卡并重新创建所有选项卡之外 不确定是
  • 仅通过过滤器传输 STDERR

    在 bash 中 有什么方法可以在将 STDERR 与 STDOUT 统一之前通过过滤器通过管道传输 STDERR 吗 也就是说 我想要 STDOUT gt terminal file whatever STDERR filter 而不是
  • openWithDefaultApplication 在应用程序文件夹中的文件上失败

    如果我尝试打开放置在air的应用程序文件夹中的文件 我只会收到 错误 3000 非法路径名 如果该文件位于应用程序文件夹之外的其他位置 则它可以工作 private var file File File documentsDirectory
  • 在 TF 估计器中使用 Keras 模型

    我想使用其中包含的预构建 keras 模型之一 vgg inception resnet 等 tf keras application用于特征提取 以节省我一些训练时间 在估计器模型函数内部执行此操作的正确方法是什么 这就是我目前所拥有的
  • 从 Pandas Groupby Dataframe 创建等高线图

    我有以下熊猫数据框 In 66 hdf size Out 66 a b 0 0 0 21004 0 1 119903 0 2 186579 0 3 417349 0 4 202723 0 5 100906 0 6 56386 0 7 608
  • 为什么在 React Hooks 中排序后数组没有更新?

    我是反应新手 状态数组在排序函数后仅更新一次 为什么第二次触发排序功能后没有再次更新 const cases setCases useState 1 2 3 4 5 let sortDown true let sorted function
  • 在任务栏中显示 JDialog 不起作用

    我使用下面的代码在任务栏上显示 JDialog 并且在 JDK 1 6 中完美工作 public class test8 public static void main String args Runnable r new Runnable
  • 单个流浪文件中的多个提供者?

    我有一个构建本地虚拟机的流浪文件 我想添加 EC2 提供商 并可以选择配置本地虚拟机或 EC2 上的虚拟机 我可以在同一个 Vagrantfile 中为多个提供程序创建配置 并以某种方式选择运行时的配置吗vagrant up 您可以使用mu
  • 如何使用“fcntl()”锁定和解锁 pid 文件

    我在网络上进行了研究 甚至在堆栈溢出上进行了研究 以便找到使用的示例fcntl 锁定和解锁 pid 文件 var run myapp pid 但我没有找到明确的例子 你能给我举一个使用的例子吗fcntl 锁定和解锁pid文件 锁不应被阻止
  • 检测用户何时单击 UITextView 中的粘贴按钮

    我在尝试更改剪切 复制 粘贴行为时遇到了很大的问题UITextView 我想要实现的是 检测用户何时将一些文本粘贴到UITextView 当我检测到这一点时 我将检查数据并做我的事情 根据文件 我了解到UIResponder 所以我创建了一
  • 父级和第一个/最后一个子级的边距折叠如何工作?

    MDN says 如果没有边框 内边距 内联内容或清除来分离margin top一个块的margin top它的第一个子块 或者没有边框 填充 内联内容 height 最小高度 or 最大高度来分离margin bottom一个块的marg
  • 为什么我的 sourceDirectories 设置在 sbt 中没有效果?

    我正在读 SBT入门指导 该页面显示sourceDirectories设置为例 为了亲自尝试 我将以下内容放入我的build sbt文件 用于基本的 hello world 项目 sourceDirectories in Compile S