Используйте defaultExcludes
для задачи unmanagedResources
и, при необходимости, для конфигурации. Например, этот параметр исключает файлы .java из основных ресурсов:
defaultExcludes in Compile in unmanagedResources := "*.java"
in Compile
ограничивает эту настройку только для основных ресурсов. Вместо этого in Test
будет применяться только к тестовым ресурсам. Опуская конфигурацию (то есть, не in Compile
или in Test
), параметр будет применяться как к основным, так и к тестовым ресурсам.
in unmanagedResources
применяет эти исключения только для ресурсов. Например, для применения исключений к источникам область действия будет in unmanagedSources
. Причина неуправляемой части состоит в том, чтобы подчеркнуть, что они применяются только к неуправляемым (или отредактированным вручную) источникам.
Ключ defaultExcludes
имеет тип sbt.FileFilter, поэтому значение параметра должно быть этого типа. В приведенном выше примере "*.java"
неявно преобразуется в FileFilter. *
интерпретируется как подстановочный знак, поэтому фильтр принимает файлы с именем, оканчивающимся на «.java». Для объединения фильтров вы используете ||
и &&
. Например, если файлы .scala также необходимо исключить, аргумент :=
будет:
"*.java" || "*.scala"
В исходном наборе файлов Ant фильтры включения и исключения выбирают взаимоисключающие наборы файлов, поэтому необходим только один.
Также можно напрямую построить Seq[File]
для unmanagedResources
. Например:
unmanagedResources in Compile <<=
unmanagedResourceDirectories in Compile map { (dirs: Seq[File]) =>
( dirs ** ("*.txt" || "*.csv" -- "*.java") ).get
}
Метод **
выбирает всех потомков, которые соответствуют аргументу FileFilter
. Вы можете проверить, что файлы выбраны так, как вы ожидаете, запустив show unmanaged-resources
.