当前位置: 首页 > 知识库问答 >
问题:

SBT编译源文件,而不考虑时间戳

能帅
2023-03-14

我观察到每次发出“编译”任务时,SBT都会编译所有源文件,而不管上次编译后的时间戳如何。以下是我的build.sbt文件:

name := "HelloSbt"

scalaVersion := "2.8.2"

unmanagedSourceDirectories in Compile := List(file("src"))

以下是我的项目结构(忽略的项目和目标目录):

./src
./src/Hello1.scala
./src/a
./src/a/Hello2.scala
./build.sbt

出于测试目的,这两个源文件只是空的对象定义。

当我输入“sbt编译”时,我得到了以下信息:

[info] Compiling 2 Scala sources to...

我可以在目标目录中找到新编译的类文件。

没有修改任何源文件,一分钟后,再次键入“sbt compile”,我得到了相同的信息和类文件,只是类文件的时间戳是最新的。我希望第二次编译不会找到任何修改过的源文件,也不应该进行编译。

我在Windows 7和Debian中都做了测试。在测试期间,我没有打开任何编辑器。有人能给出一些关于如何设置自定义src目录的提示,同时仍然能够编译自上次构建以来修改过的文件吗?

谢啦

共有1个答案

曹焱
2023-03-14

这是因为您使用的是相对路径,就像它是绝对路径一样。我很惊讶它甚至会产生一个结果,但无论如何,你应该这样写:

unmanagedSourceDirectories in Compile <<= baseDirectory(base => List(base / "src"))
 类似资料:
  • 我正在尝试Flink对从CSV文件加载的(排序的)时间戳事件进行基本聚合。 我告诉Flink使用活动时间: 然后我在KeyedStream上使用一个时间窗口 问题是,将窗口更改为10分钟实际上会在该时间过后打印结果! 我的理解是,通过明确告诉Flink使用时间戳字段作为事件时间,操作将不依赖于机器上的实时性。我错过什么了吗?

  • 我在Git中有两个主要分支:和。 我的分支的结构如下: 在我执行合并之前,和在提交、和的master中有一个共同的父级 ,我删除了一些文件(比如和)当它们仍然存在于分支中的提交中时,它们不正确。 因此,当我通过创建提交来执行三方合并以加入和时,不再包含foo和bar!Git没有以任何方式通知我他们失踪的消息。 在我看来,因为,和只是在提交之后重新播放,因此和都消失了。 Git合并的这种行为对我来说

  • 我已经为我们的生产过程创建了一个离散模拟模型,其中应模拟来年的产能、产量等。该模型可行,但我在测量过程时间方面有问题。我们的生产时间仅为上午7点至下午3点。是否有办法设置TimeMeasureStart和TimeMeasureEnd块,以便仅在轮班期间测量时间? 作为TimeMeasureStart、服务和TimeMeasureEnd块的简化示例: 代理在下午2:30通过TimeMeasureSt

  • 我试图使用scalapb从protobuf生成case类。但是,我目前编译错误。 我有我的scalapb。sbt如下: 还有,我的构建。sbt如下: 此外,我还创建了一个示例。原型文件如下: 现在,当我尝试时,我收到以下错误: 有人能帮我解决这个错误吗? 我对scalapb的版本也有点困惑。萨米特。scalapb(https://scalapb.github.io/sbt-settings.htm

  • 问题内容: 有没有一种方法可以在 不 执行的 情况下 从命令行编译Python .py文件? 我正在使用将python扩展名存储在权限有限的非标准路径中的应用程序,我想在安装过程中编译文件。我不需要Distutils的开销。 问题答案: 所述py_compile模块提供的功能,以生成从源文件中的字节码文件,并且当所述模块源文件被调用作为脚本使用的另一种功能。