授业: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的东西。