1. 自訂路徑

自訂路徑 

此頁面描述如何修改預設的來源、資源與函式庫目錄,以及從這些目錄包含哪些檔案。

變更預設的 Scala 原始碼目錄 

包含主要 Scala 原始碼的目錄預設為 src/main/scala。對於測試 Scala 原始碼,則為 src/test/scala。若要變更此設定,請修改 Compile(主要來源)或 Test(測試來源)中的 scalaSource。例如,

Compile / scalaSource := baseDirectory.value / "src"

Test / scalaSource := baseDirectory.value / "test-src"

注意:Scala 原始碼目錄可以與 Java 原始碼目錄相同。

變更預設的 Java 原始碼目錄 

包含主要 Java 原始碼的目錄預設為 src/main/java。對於測試 Java 原始碼,則為 src/test/java。若要變更此設定,請修改 Compile(主要來源)或 Test(測試來源)中的 javaSource

例如,

Compile / javaSource := baseDirectory.value / "src"

Test / javaSource := baseDirectory.value / "test-src"

注意:Scala 原始碼目錄可以與 Java 原始碼目錄相同。

變更預設的資源目錄 

包含主要資源的目錄預設為 src/main/resources。對於測試資源,則為 src/test/resources。若要變更此設定,請修改 CompileTest 設定中的 resourceDirectory

例如,

Compile / resourceDirectory := baseDirectory.value / "resources"

Test / resourceDirectory := baseDirectory.value / "test-resources"

變更預設的(非受管)函式庫目錄 

包含非受管函式庫的目錄預設為 lib/。若要變更此設定,請修改 unmanagedBase。此設定可以在專案層級或在 CompileRuntimeTest 設定中變更。

在未定義設定的情況下,此目錄是所有設定的預設目錄。例如,以下宣告 jars/ 包含函式庫

unmanagedBase := baseDirectory.value / "jars"

當針對 CompileRuntimeTest 設定時,unmanagedBase 是包含該設定函式庫的目錄,會覆寫預設值。例如,以下宣告 lib/main/ 僅包含 Compile 的 jar,而非執行或測試時的 jar

Compile / unmanagedBase := baseDirectory.value / "lib" / "main"

停用使用專案的基礎目錄作為來源目錄 

預設情況下,sbt 會將專案基礎目錄中的 .scala 檔案包含為主要來源檔案。若要停用此設定,請設定 sourcesInBase

sourcesInBase := false

新增額外的來源目錄 

sbt 從 unmanagedSourceDirectories 收集 sources,其預設包含 scalaSourcejavaSource。在適當的設定中將目錄新增至 unmanagedSourceDirectories,即可新增來源目錄。例如,若要新增 extra-src 作為包含主要來源的額外目錄,

Compile / unmanagedSourceDirectories += baseDirectory.value / "extra-src"

注意:此目錄應該只包含非受管的來源,這些來源是手動建立與管理的來源。如需使用自動產生的來源,請參閱[產生檔案][Howto-Generating-Files]。

新增額外的資源目錄 

sbt 從 unmanagedResourceDirectories 收集 resources,其預設包含 resourceDirectory。在適當的設定中將目錄新增至 unmanagedResourceDirectories,即可新增其他資源目錄。例如,若要新增 extra-resources 作為包含主要資源的額外目錄,

Compile / unmanagedResourceDirectories += baseDirectory.value / "extra-resources"

注意:此目錄應該只包含非受管的資源,這些資源是手動建立與管理的資源。如需使用自動產生的資源,請參閱[產生檔案][Howto-Generating-Files]。

在來源目錄中包含/排除檔案 

當 sbt 巡訪 unmanagedSourceDirectories 以尋找來源時,只會包含符合 includeFilter 且不符合 excludeFilter 的目錄與檔案。includeFilterexcludeFilter 的類型為 java.io.FileFilter,而 sbt 提供一些實用的組合器,用以建構 FileFilter。例如,除了預設的隱藏檔案排除之外,以下也會忽略名稱中包含 impl 的檔案,

unmanagedSources / excludeFilter := HiddenFileFilter || "*impl*"

若要為主要函式庫與測試函式庫使用不同的篩選器,請分別設定 CompileTest

Compile / unmanagedSources / includeFilter := "*.scala" || "*.java"
Test / unmanagedSources / includeFilter := HiddenFileFilter || "*impl*"

注意:預設情況下,sbt 會包含 .scala.java 來源,並排除隱藏檔案。

在資源目錄中包含/排除檔案 

當 sbt 巡訪 unmanagedResourceDirectories 以尋找資源時,只會包含符合 includeFilter 且不符合 excludeFilter 的目錄與檔案。includeFilterexcludeFilter 的類型為 java.io.FileFilter,而 sbt 提供一些實用的組合器,用以建構 FileFilter。例如,除了預設的隱藏檔案排除之外,以下也會忽略名稱中包含 impl 的檔案,

unmanagedResources / excludeFilter := HiddenFileFilter || "*impl*"

若要為主要函式庫與測試函式庫使用不同的篩選器,請分別設定 CompileTest

Compile / unmanagedResources / includeFilter := "*.txt"
Test / unmanagedResources / includeFilter := "*.html"

注意:預設情況下,sbt 會包含所有非隱藏的檔案。

僅包含某些(非受管)函式庫 

當 sbt 巡訪 unmanagedBase 以尋找資源時,只會包含符合 includeFilter 且不符合 excludeFilter 的目錄與檔案。includeFilterexcludeFilter 的類型為 java.io.FileFilter,而 sbt 提供一些實用的組合器,用以建構 FileFilter。例如,除了預設的隱藏檔案排除之外,以下也會忽略 zip 檔,

unmanagedJars / excludeFilter := HiddenFileFilter || "*.zip"

若要為主要函式庫與測試函式庫使用不同的篩選器,請分別設定 CompileTest

Compile / unmanagedJars / includeFilter := "*.jar"
Test / unmanagedJars / includeFilter := "*.jar" || "*.zip"

注意:預設情況下,sbt 會包含 jar、zip 與原生動態函式庫,並排除隱藏檔案。