如何获取sbt文件的父目录



我的sbt文件中有以下行:

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

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

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

现在在哪里;docs";位于baseDirectory旁边,而不是在其中

有简单的方法吗?

编辑:项目结构

myFolder/project/build.sbt

如果我运行";docs";在sbtshell中,我得到以下输出:

myFolder/project/docs/

我想要的是:

myFolder/docs/
myFolder/project/build.sbt

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

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

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,后者提供了额外有用的扩展方法。

baseDirectory.value属于java.io.File类型,因此您可以使用所有这些方法:

https://docs.oracle.com/javase/7/docs/api/java/io/File.html

这里相关的是getParentFile

相关内容

  • 没有找到相关文章

最新更新