我有以下场景,我有一些常见的文本文件(配置文件模板),许多项目需要将其作为构建的一部分包含在内
最简单的方法是将该文件放在某个项目的main/resources
文件夹中,并通过依赖项包含该项目。
但是我需要该文件不仅仅在类路径中,它需要位于类路径之外的文件夹中,例如/ conf
我知道我可以使用映射选项,我知道映射的右侧,但左侧是什么?
e.g。
libraryDependencies += //some project that has /main/resouces/foo.conf in it
mappings in Universal += classpathToFile("main/resources/foo.conf) -> "conf/foo-external.conf"
我应该放什么而不是classpathToFile
?
编辑:我想我可以迭代整个类路径,例如
mappings in Universal ++= {
val cp: Seq[File] = (fullClasspath in Runtime).value.files
cp.filter(_.name.endsWith(".conf")).map(f => f -> "bin/" + f.name)
}
但我不确定这是最好的方式......
答案 0 :(得分:1)
mappings
是Tuple2[File,String]
的序列,其中文件部分表示某个文件(任何文件),字符串部分是生成的zip文件中的路径,文件将被打包到。
例如:
mappings in Universal += (file("build.sbt"),"foo/build.sbt")
这意味着根项目中的build.sbt
文件将打包到名为foo的文件夹下生成的zip文件中。该文件可以是您想要的任何文件。
另外,定义你所做的更好的方法是:
mappings in Universal <++= (fullClasspath in Runtime) map {
cp => {
cp.files.filter(_.name.endsWith(".conf")).map(f => f -> "bin/" + f.name)
}
}