Как настроить многопроектные сборки sbt для подпроектов?
У меня есть проект sbt (0.13.1) с кучей подпроектов. Я генерирую конфигурации проекта eclipse, используя sbteclipse. Мои проекты имеют только исходные файлы scala, поэтому я хочу удалить сгенерированные папки src/java.
Я могу добиться этого, добавив (избыточно) следующее к build.sbt каждого подпроекта:
unmanagedSourceDirectories in Compile := (scalaSource in Compile).value :: Nil
unmanagedSourceDirectories in Test := (scalaSource in Test).value :: Nil
Я попытался просто добавить вышеупомянутую конфигурацию в корневой build.sbt, но eclipse
Команда по-прежнему генерирует исходные папки Java.
Есть ли способ указать конфигурацию, подобную этой, один раз (в корневом build.sbt) и передать ее каждому подпроекту?
1 ответ
Решение
Вы можете определить настройки без границ и затем использовать их
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)
)
}
Подробнее о создании плагинов в документации по плагинам