IntelliJ SBT - 模块命名

IntelliJ SBT - Module naming

什么

IntelliJ IDEA 2016.1.1
Build #IU-145.597, built on March 29, 2016
JRE: 1.8.0_40-release-b132 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Scala Plugin Version: 3.0.2

用于确定根模块的名称?

我一直认为它使用 build.sbt 文件中定义的 name := "[name]" 来命名根模块,但我当前的 SBT 项目(使用 Scala.JS CrossProject ) falls-back/uses 父目录名称(参见图片 1 到 3)。

有什么办法可以改变这种行为吗?

看来手头的问题不是 IntelliJ 中的错误,而是 SBT 中的 "feature"。当没有项目使用根路径时,SBT 会自动为您创建一个聚合所有子项目并以父目录命名的项目。像这样定义根项目:

lazy val root = project in file(".").
    aggregate(cross.js, cross.jvm).
    settings(...)

lazy val cross = CrossProject("jvm", "js", file("."), FullWithSrc).
    settings(...)

将解决此问题并使用正确的命名。

CrossProject 仅指定两个项目,并在任何共享代码的设置中创建一个 unmanagedSources 条目。 CrossProject 创建的两个项目可由 CrossProject#jsCrossProject#jvm 访问。在 SBT 项目上设置聚合 属性 将使为根发出的任何命令滴流到子项目。