如何让sbt多项目构建配置子项目的设置?

时间:2014-11-07 20:11:31

标签: scala sbt sbteclipse

我有一个(0.13.1)项目,包含一些子项目。我正在使用生成项目配置。我的项目只有源文件,所以我想删除生成的src / java文件夹。

我可以通过(冗余地)将以下内容添加到每个子项目的build.sbt来实现:

unmanagedSourceDirectories in Compile := (scalaSource in Compile).value :: Nil

unmanagedSourceDirectories in Test := (scalaSource in Test).value :: Nil

我尝试将上述配置添加到root build.sbt,但eclipse命令仍然生成了java源文件夹。

有没有办法指定一次这样的配置(在root build.sbt中)并让它流向每个子项目?

1 个答案:

答案 0 :(得分:0)

您可以定义未范围的设置,然后重复使用

val onlyScalaSources = Seq(
  unmanagedSourceDirectories in Compile := Seq((scalaSource in Compile).value),
  unmanagedSourceDirectories in Test := Seq((scalaSource in Test).value)
)

val project1 = project.in( file( "project1" )
  .settings(onlyScalaSources: _*)

val project2 = project.in( file( "project2" )
  .settings(onlyScalaSources: _*)

您还可以创建一个简单的插件(未经测试的代码)

object OnlyScalaSources extends AutoPlugin {
  override def trigger = allRequirements
  override lazy val projectSettings = Seq(
    unmanagedSourceDirectories in Compile := Seq((scalaSource in Compile).value),
    unmanagedSourceDirectories in Test := Seq((scalaSource in Test).value)
  )
}

有关在plugins documentation

中创建插件的更多详细信息