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

scala – SBT:从Jar排除课程

发布时间:2020-12-16 09:10:39 所属栏目:安全 来源:网络整理
导读:我将旧版jar项目转换为SBT,由于奇怪的原因并不容易解决,该项目内附有“ javax / servlet / Servlet.class”.所以我需要以某种方式将该类从package-bin生成的jar文件中排除.我该如何做到这一点?最好我想排除使用通配符(即javax.*). SBT组件插件看起来像具有
我将旧版jar项目转换为SBT,由于奇怪的原因并不容易解决,该项目内附有“ javax / servlet / Servlet.class”.所以我需要以某种方式将该类从package-bin生成的jar文件中排除.我该如何做到这一点?最好我想排除使用通配符(即javax.*).

SBT组件插件看起来像具有这样做的功能,但是我担心依靠sbt装配意味着我的jar项目将不会在一个muliti模块项目中工作(即如果我将它包含在一个war文件中的依赖项那么战争项目需要被告知要在依赖的jar项目上运行程序,而不是打包bin,但是我可能在这里被误认为).

解决方法

每个任务声明其使用的其他任务和设置.您可以使用inspect来确定这些输入,如 Inspecting Settings和最近的教程式 blog post by John Cheng中所述.

在这种情况下,packageBin使用的相关任务就是映射.映射任务收集要包含在jar中的文件,并将它们映射到jar中的路径.某些背景在Mapping Files中进行了说明,但是结果是映射产生Seq [(File,String)]类型的值.这里,File是提供内容的输入文件,String是jar中的路径.

因此,要修改packageBin任务的映射,请从不希望包含的默认映射中过滤出路径:

mappings in (Compile,packageBin) ~= { (ms: Seq[(File,String)]) =>
  ms filter { case (file,toPath) =>
    toPath != "javax/servlet/Servlet.class"
  }
}

(Compile,packageBin)中的映射选择主包任务的映射(而不是测试源或packageSrc任务).

x?= f表示“将x设置为将x应用于前一个值的结果”. (详见More About Settings)

该过滤器将删除路径对应于Servlet类的所有对.

(编辑:李大同)

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

    推荐文章
      热点阅读