1

我是sbtmill的新手,我正在练习使用这两种工具来构建凿子(scala 项目)。查看这个github 存储库作为参考,我想知道如何在该存储库中编写mill-version build.sh

这是我的目录结构

─ chisel-template (root directory / projects directory)
├── build.sc
├── build.sh
├── src
|   └─main
|     └─scala
|       └─lab1
|         └─Mux2.scala
└── _temphelper.scala

build.sh 所做的是在根目录中准备一个样板作为 main 函数,以使编译和运行过程更加容易,它是 sbt 版本。我很好奇为什么 sbt 可以检测到 main 函数(_temphelper.Elaborate),即使它不在 src/main 目录中。而当我改用 Mill 时,Mill 根本无法检测到 _temphelper.scala,除非我将文件移动到 root/src/main。有没有设置可以让 Mill 做 sbt 可以做的事情?

我不确定这个问题是否与...有关

  1. 更改 sbt 中的sourceDirectories和 Mill 中的chiselMoudule.sources。欢迎任何建议。

  2. 修改millSourcePath来实现我的请求。

我的问题是我应该做哪些设置才能使mill可以检测到根目录中的主类?

4

1 回答 1

1

这是因为 sbt 将它在项目根目录中找到的任何 Scala 文件都包含为源文件,除非另有说明。

相反,Mill 将只使用在用 . 指定的任何目录下找到的源文件sources。因此,您可能希望将项目根目录添加为源目录,但我强烈建议不要这样做。

最好是将_temphelper.scala文件移动到源目录之一或创建一个新的专用目录,将文件移动到那里并将此目录添加到源中,如下所示:

object chiselModule extends CrossSbtModule // ...
{
  def sources = T.sources { 
    super.sources() ++ Seq(PathRef(T.workspace / "your" / "new" / "directory"))
  }
}

于 2022-02-24T10:24:43.880 回答