Как настроить многопроектные сборки 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) и передать ее каждому подпроекту?


person Brian Kent    schedule 07.11.2014    source источник


Ответы (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)
  )
}

Дополнительные сведения о создании подключаемых модулей см. в документации по подключаемым модулям.

person EECOLOR    schedule 09.11.2014