2

根据关于更改路径的 sbt 教程,我正在尝试将“目标”输出目录更改为“其他”

override def outputDirectoryName = "someother"

一切都很好,除了一个:sbt 自动创建目标目录,里面有“.history”文件。为什么 sbt 应该创建“其他”目录时这样做?我尝试覆盖从BasicProjectPaths继承的所有方法(我使用 sbt.DefaultProject 作为我的项目描述符的超类)

override def mainCompilePath = ...
override def testCompilePath = ...
...

但是尽管路径覆盖,sbt 仍会创建“目标”文件夹。

4

3 回答 3

2

看起来它当然应该在主干中使用覆盖的 outputDirectoryName ...

/** The path to the file that provides persistence for history. */
def historyPath: Option[Path] = Some(outputRootPath / ".history")
def outputPath = crossPath(outputRootPath)
def outputRootPath: Path = outputDirectoryName
def outputDirectoryName = DefaultOutputDirectoryName

来自 SBT 的当前主干)。

在以前的版本中可能有所不同。你有没有考虑提出一个新的错误

于 2010-09-29T13:22:41.950 回答
0

在 sbt 0.13.5 中,我找到了一种通过在 build.sbt 文件中重新分配目标来更改目标文件夹的方法:

目标:=文件(“someotherParent”)/“someotherSubdir”

这只会修改已构建类和工件的目录,但是 .history 文件始终位于项目根目录中。

不幸的是,其他一些插件(xsbt-web-plugin)似乎有问题 - 通过 SBT 控制台运行 webapp 会产生奇怪的错误,当我切换回标准目录布局时,这些问题就消失了。

于 2014-08-20T06:18:40.827 回答
0

实现我的目标的更好方法(在一个目录中的所有 JARS,其名称包含 JAVA-VM 版本)似乎是指定一个适当的发布目标 - 对“sbt publish”的限制较少,其他插件是不受不同目录布局的干扰。

于 2014-10-07T10:46:43.073 回答