此頁面描述如何修改預設的來源、資源與函式庫目錄,以及從這些目錄包含哪些檔案。
包含主要 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 原始碼的目錄預設為 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
。若要變更此設定,請修改 Compile
或 Test
設定中的 resourceDirectory
。
例如,
Compile / resourceDirectory := baseDirectory.value / "resources"
Test / resourceDirectory := baseDirectory.value / "test-resources"
包含非受管函式庫的目錄預設為 lib/
。若要變更此設定,請修改 unmanagedBase
。此設定可以在專案層級或在 Compile
、Runtime
或 Test
設定中變更。
在未定義設定的情況下,此目錄是所有設定的預設目錄。例如,以下宣告 jars/
包含函式庫
unmanagedBase := baseDirectory.value / "jars"
當針對 Compile
、Runtime
或 Test
設定時,unmanagedBase
是包含該設定函式庫的目錄,會覆寫預設值。例如,以下宣告 lib/main/
僅包含 Compile
的 jar,而非執行或測試時的 jar
Compile / unmanagedBase := baseDirectory.value / "lib" / "main"
預設情況下,sbt 會將專案基礎目錄中的 .scala
檔案包含為主要來源檔案。若要停用此設定,請設定 sourcesInBase
sourcesInBase := false
sbt 從 unmanagedSourceDirectories
收集 sources
,其預設包含 scalaSource
與 javaSource
。在適當的設定中將目錄新增至 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
的目錄與檔案。includeFilter
與 excludeFilter
的類型為 java.io.FileFilter
,而 sbt 提供一些實用的組合器,用以建構 FileFilter
。例如,除了預設的隱藏檔案排除之外,以下也會忽略名稱中包含 impl
的檔案,
unmanagedSources / excludeFilter := HiddenFileFilter || "*impl*"
若要為主要函式庫與測試函式庫使用不同的篩選器,請分別設定 Compile
與 Test
Compile / unmanagedSources / includeFilter := "*.scala" || "*.java"
Test / unmanagedSources / includeFilter := HiddenFileFilter || "*impl*"
注意:預設情況下,sbt 會包含
.scala
與.java
來源,並排除隱藏檔案。
當 sbt 巡訪 unmanagedResourceDirectories
以尋找資源時,只會包含符合 includeFilter
且不符合 excludeFilter
的目錄與檔案。includeFilter
與 excludeFilter
的類型為 java.io.FileFilter
,而 sbt 提供一些實用的組合器,用以建構 FileFilter
。例如,除了預設的隱藏檔案排除之外,以下也會忽略名稱中包含 impl
的檔案,
unmanagedResources / excludeFilter := HiddenFileFilter || "*impl*"
若要為主要函式庫與測試函式庫使用不同的篩選器,請分別設定 Compile
與 Test
Compile / unmanagedResources / includeFilter := "*.txt"
Test / unmanagedResources / includeFilter := "*.html"
注意:預設情況下,sbt 會包含所有非隱藏的檔案。
當 sbt 巡訪 unmanagedBase
以尋找資源時,只會包含符合 includeFilter
且不符合 excludeFilter
的目錄與檔案。includeFilter
與 excludeFilter
的類型為 java.io.FileFilter
,而 sbt 提供一些實用的組合器,用以建構 FileFilter
。例如,除了預設的隱藏檔案排除之外,以下也會忽略 zip 檔,
unmanagedJars / excludeFilter := HiddenFileFilter || "*.zip"
若要為主要函式庫與測試函式庫使用不同的篩選器,請分別設定 Compile
與 Test
Compile / unmanagedJars / includeFilter := "*.jar"
Test / unmanagedJars / includeFilter := "*.jar" || "*.zip"
注意:預設情況下,sbt 會包含 jar、zip 與原生動態函式庫,並排除隱藏檔案。