scala – 在SBT中过滤资源
我正在设置SBT来编译一个不使用maven目录结构的现有项目.我使用了
full configuration,并设置了我的javaSource& resourceDirectory设置如下:
def settings = Defaults.defaultSettings ++ Seq( resourceDirectory in Compile <<= baseDirectory( _ / "java" ),javaSource in Compile <<= baseDirectory( _ / "java" ) ) 现在我想要能够过滤我们包含在jar工件中的资源,就像我们目前的蚂蚁一样,加上exclude .java文件,因为我们的资源与源代码混合在一起.例如: <fileset dir="java" includes="**/*.txt,**/*.csv" excludes="**/*.java" /> 有没有办法做到这一点? 解决方法
对unmanagedResources任务和可选的配置使用作用域的defaultExcludes.例如,此设置从主要资源中排除.java文件:
defaultExcludes in Compile in unmanagedResources := "*.java" 在“编译”中将此设置限制为仅适用于主要资源.通过在测试中使用,它将仅适用于测试资源.通过省略配置(即在编译或测试中不存在),该设置将适用于主资源和测试资源. 在unmanagedResources中只应用这些排除的资源.要将不包括的内容应用于源,例如,范围将在非管理资源中.非托管部分的原因是强调这些仅适用于非托管(或手动编辑的)源. defaultExcludes键的类型为sbt.FileFilter,因此设置值必须为此类型.在上面的例子中,“* .java”被隐式转换为FileFilter. *被解释为通配符,因此过滤器接受名称以.java结尾的文件.要组合过滤器,您可以使用||和&&例如,如果.scala文件也需要被排除,参数:=将是: "*.java" || "*.scala" 在原始Ant文件集中,包含和排除过滤器选择相互排斥的文件集,因此只需要一个文件. 也可以直接构建UnmanagedResources的Seq [File].例如: unmanagedResources in Compile <<= unmanagedResourceDirectories in Compile map { (dirs: Seq[File]) => ( dirs ** ("*.txt" || "*.csv" -- "*.java") ).get } **方法选择与FileFilter参数匹配的所有后代.您可以通过运行show unmanaged-resources来验证文件是否按预期进行选择. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |