scala - 如何获取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 页面上托管我的文档。这似乎是最简单的方法,不会使事情复杂化。
解决方案
考虑标准的两个连续点..
符号来表示父目录,例如
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
,它提供了额外的有用的扩展方法。
推荐阅读
- python - 如何检查字符串中的连续重复字符
- authentication - 如何在没有密钥卡的情况下使用 webauthn
- python - 使用集合确定唯一元素的 Dunder 方法
- python - 以函数为内核的卷积
- elixir - 为什么我的机器上只安装了1.7.3,phoenix install会elixir 1.4?
- c# - 使用 AWSSDK 为 AmazonKinesisClient 续订凭证
- java - 在Java中用2位数字排序数组
- docker - Docker的clang无法更新
- typo3 - 印刷条件 GP 未完成
- javascript - 如何使用 jquery 将类添加到所有 li 但不单击 li