授业:sbt package时剔除resources下配置文件

2018-02-22  本文已影响0人  贲少

需求

Scala项目(用sbt构建工具)中,希望package时(编译打包)能产生src下所有文件(含resources的),以便于进行Lagom里runAll这类的测试,但在生产环境下,则希望resources下的配置文件从Jar包中剔除,以便灵活配置。

办法

修改sbt脚本,写一个过滤函数:

val excludeResources = List(".conf", ".xml")
val packIt = (f: (File, String)) => {
  !excludeResources.exists(r => f._2.endsWith(r))
}

再在项目settings里或全局,对打包文件选择进行过滤:

mappings in (Compile, packageBin) ~= (_.filter(packIt))

注意:另一种办法并不完美解决

val f1 = (f: File) => {
  f.getAbsolutePath.endsWith("resources")
}
excludeFilter in (Compile, packageBin) := new SimpleFileFilter(f1)

它会任何时候都不输出resources目录下的内容,也就是说package完成后你在target/scala-2.11目录下看不到resources的东西。

上一篇下一篇

猜你喜欢

热点阅读