Как я могу изменить каталог, в который SBT помещает тестовые ресурсы? - PullRequest
4 голосов
/ 21 января 2011

Я хочу, чтобы действие test-compile поместило содержимое src / test / resources в target / scala_2.8.1 / test-classes.

Причина этого в том, что я запускаю SBT с IntelliJ IDEA, который помещает каталог test-classes в classpath при запуске тестов.

Мой файл logback-test.xml (конфигурация для каркаса журналирования logback) находится в src / test / resources и не обнаруживается во время тестирования.

Ответы [ 3 ]

4 голосов
/ 21 января 2011

Это не дает прямого ответа на ваш вопрос, но вместо этого показывает альтернативу, которую я использую.

Я добавляю две новые задачи: prepare и test-prepare.

lazy val prepare = task{
  None
} dependsOn (compile, copyResources) describedAs ("Compiles main, copies main resources. Use for the before-action in the idea-sbt-plugin")

lazy val testPrepare = task{
  None
} dependsOn (testCompile, copyResources, copyTestResources) describedAs ("Compiles main and test, copies all resources. Use for the before-action in the idea-sbt-plugin")

Затем я настраиваю для них действие SBT «перед запуском».Для этого требуется idea-sbt-plugin .

alt text

Я использую процессор sbt-idea SBT для настройки модуля IntelliJ,Это включает target/scala_2.8.1/[test-]resources как зависимость.

alt text

2 голосов
/ 21 января 2011

Хотя может быть лучший способ сделать это, это должно работать так же хорошо, как только ничто не отменяет testCompile. Просто добавьте следующее в определение вашего проекта.

override lazy val testCompile = testCompileAction dependsOn task {
  import sbt.Process._
  "cp -R src/test/resources/* target/scala_2.8.1/test-classes" ! log
  None
}
1 голос
/ 12 февраля 2011
override lazy val testCompile = testCompileAction dependsOn copyTestResources
override def testResourcesOutputPath = testCompilePath
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...