2015-08-10 2 views
2

У меня есть проект Scala с использованием SBT. У меня есть каталог html внутри моего проекта, который необходимо скопировать, когда проект запускается с sbt run, или когда я упакую его в банку, используя sbt-assembly. В любом случае, я буду ожидать, что каталог html будет скопирован в target/scala-2.11/classes/html.Копирование ресурсов с использованием SBT

Я пробовал:

resourceDirectory in Compile := file("html") 

... который перемещает каждый из файлов внутри html в target/scala-2.11/classes без промежуточного html каталога.

и:

unmanagedResources in Compile := Seq(file("html")) 

... который копирует каталог, но ни один из файлов внутри него!

+0

Почему вы не просто поставить 'html' в какой-то другой каталог, а затем добавить это к 'unmanagedResourceDirectories'? – ghik

+0

Я мог бы, но я бы предпочел не иметь более сложную структуру каталогов только из-за ограничений SBT – bicpence

ответ

1

Может быть, не так хорошо, но рабочий:

val html = "html" 

lazy val compileCopyTask = taskKey[Unit](s"Copy $html.") 

compileCopyTask := { 

    println(s"Start copying $html") 
    val mainVersion = scalaVersion.value.split("""\.""").take(2).mkString(".") 
    val to = target.value/("scala-" + mainVersion)/html/"classes" 
    to.mkdirs() 
    val from = baseDirectory.value/html 
    IO.copyDirectory(from,to) 
    println(s"$from -> $to...done.") 
} 

compile in Compile := { 
    compileCopyTask.value 
    (compile in Compile).value 
} 
0

, если вы запустите sbt copy-resources после sbt compile вы, возможно, немного удачи. В последнее время это произошло.

папка HTML будет находиться в Scr/основные/ресурсов или там, где ваш resourceDirectory установлен в вашей сборке ....

Смежные вопросы