Создание задачи SBT для копирования каталогов во время компиляции? - PullRequest
6 голосов
/ 11 октября 2011

Я новичок во всей SBT и Scala-сцене и пытаюсь создать проект, который использует классы Java / Scala и Hibernate.Я получаю проект для хорошей сборки - мне просто нужно вручную скопировать мои файлы конфигурации hibernate в мою папку target/scala<version>/classes, чтобы они могли быть выбраны hibernate.

Есть ли способ создатьзадача в SBT скопировать эти папки на каждую компиляцию?Это мой Build.scala файл:

import sbt._

object Sportsbook extends Build {
  lazy val project = Project (
    "sportsbook",
    file("."),
    copyConfigTask
  )

  val copyConfig = TaskKey[Unit]("copy", "Copy hibernate files over to target directory")

  /*
  // Something like this
  lazy val copyConfigTask = copyConfig <<=
    val configDir1 = baseDirectory / "config"
    val configDir2 = outputPath / "config"
    IO.copyDirectory(configDir1, configDir2)
  */
}

1 Ответ

12 голосов
/ 11 октября 2011

Самый прямой способ добиться этого - переместить файлы в ./src/main/resources/config.

. Или добавить ${base}/config к resourceDirectories in Compile.

resourceDirectories in Compile <+= baseDirectory / "config"

там будет скопирован в корень пути к классам.Вам нужно переместить их в ./src/config/config, чтобы восстановить это.(Посмотрите, как mappings для ресурсов на основе относительного расположения файлов ресурсов в каталогах базовых ресурсов )

Хотите ли вы файлы, упакованные в вашем JAR?Оба этих ответа приведут к этому.Вы можете взять их из mappings in packageBin, чтобы избежать этого.

mappings in (Compile, packageBin) ~= (_.filter { case (file, outpath) => outpath.startsWith("/config")} )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...