IntelliJ SBT - 模块命名

时间:2016-04-17 16:13:01

标签: scala intellij-idea sbt scala.js

什么是

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

用于确定根模块的名称?

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

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

  • 是否有任何类型的主覆盖?
  • 这是使用CrossProject
  • 的结果
  • 如果是,如何在不使用CrossProject的情况下创建相同的效果?

SBT module overview

Folder structure overview

<code>build.sbt</code> snippet

1 个答案:

答案 0 :(得分:1)

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

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

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

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

CrossProject仅指定两个项目,并在任何共享代码的设置中创建unmanagedSources条目。 CrossProjectCrossProject#js可以访问由CrossProject#jvm创建的两个项目。在SBT项目上设置聚合属性将为根发布任何命令,然后向下传递到子项目。