Изменить выходной каталог sbt

Я хочу изменить свой выходной каталог для некоторых сгенерированных файлов, в этом случае сгенерированных объектов из XSD-схемы.

Вот часть моего файла сборки.

val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA,
      settings = Defaults.defaultSettings ++ buildInfoSettings ++ scalaxbSettings
    ).settings(
      sourceGenerators in Compile <+= buildInfo,
      buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion),
      buildInfoPackage := "hello",
      packageName in scalaxb in Compile := "models",
      sourceGenerators in Compile <+= scalaxb in Compile
    )

Этот код помещает мои сгенерированные файлы в следующую директорию:

target/scala-2.10/src_managed/main/models/

Как я могу изменить свой buildfile для вывода файлов ниже?

/app/models/

1 ответ

Решение

Проверьте sourceManaged установочный ключ. Любые задачи генератора исходного кода обычно помещают материал в файл, заданный этим параметром.

source-managed                 - target/scala-2.10/src_managed
compile:source-managed         - target/scala-2.10/src_managed/main
test:source-managed            - target/scala-2.10/src_managed/test

Обратите внимание, что значения "compile" и "test" основаны на базовом значении "source-managed", которое, в свою очередь, основано на значении cross-target, который основан на значении target и несколько других.

Вы можете легко изменить значение compile:source-managed установка в определении сборки sbt с настройкой

sourceManaged in Compile := file("app/models")

Если вы хотите основать свои настройки на других настройках, таких как базовый каталог проекта, вы можете использовать что-то более похожее на

sourceManaged in Compile <<= baseDirectory { _ / "app/models" }

Конечно, вы можете найти много информации об использовании настроек здесь: http://www.scala-sbt.org/release/docs/Getting-Started/More-About-Settings
редактировать: похоже, что эта ссылка мертва. Прошло несколько лет, поэтому я не уверен на 100%, но это, вероятно, близко к тому, о чем говорилось в исходной ссылке: SBT 0.13 - определение сборки или SBT 1.0 - определение сборки

Другие вопросы по тегам