首页 > 解决方案 > 如何获取sbt文件的父目录

问题描述

我的 sbt 文件中有以下行:

target in Compile in doc := baseDirectory.value / "docs"

这是在我的目标目录下一级的目录中创建一个文件夹。我想得到本质上(伪代码):

parentDirectory = parent of baseDirectory
target in Compile in doc := parentDirectory.value / "docs"

现在“文档”位于 baseDirectory 旁边,而不是在其中。

是否有捷径可寻?

编辑:项目结构

myFolder/project/build.sbt

如果我在 sbt shell 中运行“docs”,我会得到以下输出:

myFolder/project/docs/

我想要的是:

myFolder/docs/
myFolder/project/build.sbt

我想这样做的原因是我可以在同一目录中的 github 页面上托管我的文档。这似乎是最简单的方法,不会使事情复杂化。

标签: scalapathcompilationsbt

解决方案


考虑标准的两个连续点..符号来表示父目录,例如

Compile / doc / target := baseDirectory.value / ".." / "docs"

或者file("..")也可以工作

Compile / doc / target := file("../docs")

您可能希望创建一个专用设置以供重复使用

lazy val parentOfBaseDirectory = settingKey[File]("Parent of base directory")
parentOfBaseDirectory := baseDirectory.value / ".."

几个旁注:

set您可以使用和分号在 sbt shell 中进行快速的一次性实验;

set Compile/doc/target := baseDirectory.value / ".." / "docs"; doc

/语法起作用的原因是因为File它被隐式转换为 sbt RichFile,它提供了额外的有用的扩展方法。


推荐阅读