2016-03-26 13 views
7

Làm thế nào tôi có thể sao chép một số tập tin nguồn (ví dụ /src/main/html/*.html) vào thư mục build đầu ra (ví dụ /target/scala-2.11/) với SBT để các tập tin kết thúc trong thư mục gốc mục tiêu và không nằm trong classes thư mục con (đó là những gì sẽ xảy ra nếu tôi thêm thư mục nguồn đến unmanagedResourceDirectories)?Làm thế nào để sao chép một số tệp vào thư mục đích xây dựng với SBT?

Trả lời

6

Bạn có thể xác định SBT nguồn lực công việc sao chép để nhắm mục tiêu thư mục:

lazy val copyRes = TaskKey[Unit]("copyRes") 

lazy val root:Project = Project(
    ... 
) 
.settings(
    ... 
    copyRes <<= (baseDirectory, target) map { 
    (base, trg) => new File(base, "src/html").listFiles().foreach(
     file => Files.copy(file.toPath, new File(trg, file.name).toPath) 
    ) 
    } 
) 

và sử dụng nhiệm vụ này trong SBT:

sbt clean package copyRes 
+0

nhập khẩu cho tập tin là gì? Ngoài ra, tôi đã cố gắng để hardcode "mục tiêu" như là một chuỗi đại diện cho một thư mục liên quan đến baseDirectory, nhưng điều này đã chết dường như không hoạt động. – bbarker

+1

java.nio.file.Files – Nyavro

+0

Cũng lưu ý rằng điều này có lẽ không đệ quy. 'File.listFiles' chỉ trả về hậu duệ trực tiếp. – VasyaNovikov

Các vấn đề liên quan