2011-10-10 28 views
6

Tôi mới tham gia toàn bộ cảnh SBT và Scala và đang cố gắng xây dựng một dự án sử dụng các lớp Java/Scala và Hibernate. Tôi nhận được các dự án để xây dựng tốt - Tôi chỉ cần phải tự sao chép qua các tập tin cấu hình hibernate của tôi vào thư mục target/scala<version>/classes của tôi để họ có thể được chọn bằng ngủ đông.Tạo nhiệm vụ SBT để sao chép các thư mục trong khi biên dịch?

Có cách nào để tạo một tác vụ trong SBT để sao chép các thư mục này lên trên mỗi biên dịch không? Đây là Build.scala tập tin của tôi:

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) 
    */ 
} 

Trả lời

12

Các phương tiện trực tiếp nhất để đạt được điều này là để di chuyển các tập tin vào ./src/main/resources/config.

Hoặc, thêm ${base}/config đến resourceDirectories in Compile.

resourceDirectories in Compile <+= baseDirectory/"config" 

Thật không may, tệp trong đó sẽ được sao chép vào thư mục gốc của đường dẫn lớp. Bạn sẽ cần phải di chuyển chúng đến ./src/config/config để khôi phục điều đó. (Xem cách mappings đối với tài nguyên là based on the relative location of resource files to the base resource directories)

Bạn có muốn các tệp được đóng gói trong JAR của mình không? Cả hai câu trả lời này sẽ dẫn đến điều đó. Bạn có thể lấy chúng ra khỏi mappings in packageBin để tránh điều này.

mappings in (Compile, packageBin) ~= (_.filter { case (file, outpath) => outpath.startsWith("/config")}) 
+0

Cảm ơn - Tôi vừa mới đi đầu tiên. Vì một số lý do tôi đã liên kết trong tài nguyên đầu của tôi chỉ với các tệp jar. Đơn giản hơn nhiều theo cách này. – user988427

+0

@ user988427 bạn có thể phê duyệt câu trả lời vì câu trả lời đó có hiệu quả với bạn không? –

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