Użyj zakresu defaultExcludes
dla zadania unmanagedResources
i opcjonalnie konfiguracji. Na przykład, ustawienie wyklucza .java pliki z głównych źródeł:
defaultExcludes in Compile in unmanagedResources := "*.java"
in Compile
ogranicza to ustawienie, aby zastosować tylko do głównych zasobów. Używając zamiast tego opcji in Test
, będzie to dotyczyło tylko testowania zasobów. Pomijając konfigurację (to jest nie in Compile
lub in Test
), ustawienie dotyczyłoby zarówno zasobów głównych, jak i testowych.
in unmanagedResources
stosuje te wykluczenia tylko dla zasobów. Aby zastosować wykluczenia do źródeł, na przykład zakres byłby następujący: in unmanagedSources
. Powodem części niezarządzanej jest podkreślenie, że odnoszą się one tylko do źródeł niezarządzanych (lub edytowanych ręcznie).
Klucz defaultExcludes
ma typ sbt.FileFilter, więc wartość ustawienia musi być tego typu. W powyższym przykładzie "*.java"
jest niejawnie przekonwertowane na FileFilter. *
jest interpretowany jako symbol wieloznaczny, dlatego filtr akceptuje pliki o nazwie kończącej się na ".java". Aby połączyć filtry, używaj ||
i &&
. Na przykład, jeśli .scala pliki potrzebne aby wykluczyć także argument do :=
byłoby:
"*.java" || "*.scala"
W oryginalnym Ant zestawu plików, to włączać i wyłączać filtry wybrać wzajemnie wykluczających zestawów plików, więc jest tylko jeden niezbędny.
Możliwe jest również bezpośrednie zbudowanie Seq[File]
dla unmanagedResources
. Na przykład:
unmanagedResources in Compile <<=
unmanagedResourceDirectories in Compile map { (dirs: Seq[File]) =>
(dirs ** ("*.txt" || "*.csv" -- "*.java")).get
}
Sposób **
wybiera wszystkie potomków, które pasują do FileFilter
argument. Możesz sprawdzić, czy pliki zostały wybrane zgodnie z oczekiwaniami, uruchamiając show unmanaged-resources
.
Po prostu informacja dla osób, które patrzą na to pytanie, to jest SBT 0.10. –
Warto utworzyć tag sbt10? To tak bardzo różni się od sbt07 ... – opyate
sub subskrypcja - "defaultExcludes" został wycofany na rzecz 'excludeFilter'in sbt 0.11 – wbarksdale