scala - mill 中指向 build.sc 文件所在目录的首选方法是什么?
问题描述
mill 中指向build.sc
文件所在目录的首选方法是什么?
在磨机文档os.pwd
中使用例如here,但如果可以从其他地方启动/运行磨机,则os.pwd
指向不正确的位置。
import mill._, mill.modules.Jvm
def sourceRoot = T.sources { os.pwd / "src" }
def resourceRoot = T.sources { os.pwd / "resources" }
解决方案
每个已定义模块的根位置都在 中定义def millSourcePath: os.Path
,这是访问模块路径的首选方式。
例子:
import mill._, mill.scalalib._
object mymodule extends JavaModule {
def sources = T.sources(millSourcePath / "src")
}
$ mill show __.sources
No mill version specified.
You should provide a version via '.mill-version' file or --mill-version option.
Using mill version 0.9.9
Compiling /tmp/stackoverflow/build.sc
[1/1] show
[1/1] show > [1/1] mymodule.sources
[
"ref:c984eca8:/tmp/stackoverflow/mymodule/src"
]
如果您需要访问项目本身的路径,请注意,它mill.define.Module
本身就是一个,您可以通过变量访问它build
。因此,可以通过 访问项目目录build.millSourcePath
。
例子:
import mill._, mill.scalalib._
val baseDir = build.millSourcePath
object mymodule extends JavaModule {
def sources = T.sources {
super.sources() ++ Seq(PathRef(baseDir / "src"))
}
}
$ mill show __.sources
No mill version specified.
You should provide a version via '.mill-version' file or --mill-version option.
Using mill version 0.9.9
Compiling /tmp/stackoverflow/build.sc
[1/1] show
[1/1] show > [2/2] mymodule.sources
[
"ref:c984eca8:/tmp/stackoverflow/mymodule/src",
"ref:c984eca8:/tmp/stackoverflow/src"
]
推荐阅读
- google-earth-engine - 无法使用“getInfo”将列表元素提取为整数
- sql - SQL 识别同一年出现多次的记录
- android - Realme 2 Pro 中的自动启动
- python - 当连接键作为列表给出时,如何修改火花数据框中的连接列?
- javascript - 如何显示已解析 CSV 数据 JSON 的最后一行的特定元素
- azure - 您应该在 Linux 上的 Azure Kudu 脚本中使用哪个 Python 可执行文件?
- mysql - 在 MYSQL 中加入 Count 或 Sum
- hadoop - PIG:要排列在特定列集中的多个记录
- regex - 如何使用正则表达式替换字符串的一部分
- c# - 我想要以(开始,结束)为键的数据结构,然后能够在整个数据结构中搜索整数并获得相应的值