加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 在SBT中过滤资源

发布时间:2020-12-16 21:33:24 所属栏目:安全 来源:网络整理
导读:我正在设置SBT来编译一个不使用maven目录结构的现有项目.我使用了 full configuration,并设置了我的javaSource resourceDirectory设置如下: def settings = Defaults.defaultSettings ++ Seq( resourceDirectory in Compile = baseDirectory( _ / "java" ),
我正在设置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来验证文件是否按预期进行选择.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读