我使用 sbt 0.13.5 构建一个项目,其中包含一些在部署后需要人工编辑的配置文件。
使用sbt-native-packager的stage
命令构建我的基本输出目录结构以进行部署。这会产生一个bin
包含启动脚本的文件夹和一个文件夹中的所有 jar lib
。伟大的。
这只留下文本配置文件,应该conf
逐字复制到bin/
和文件夹旁边的lib/
文件夹中(不包含在任何 jar 中)。
如何使用 sbt 将这些配置文件复制到文件系统上的输出目录(而不是任何 jars)?
我使用 sbt 0.13.5 构建一个项目,其中包含一些在部署后需要人工编辑的配置文件。
使用sbt-native-packager的stage
命令构建我的基本输出目录结构以进行部署。这会产生一个bin
包含启动脚本的文件夹和一个文件夹中的所有 jar lib
。伟大的。
这只留下文本配置文件,应该conf
逐字复制到bin/
和文件夹旁边的lib/
文件夹中(不包含在任何 jar 中)。
如何使用 sbt 将这些配置文件复制到文件系统上的输出目录(而不是任何 jars)?
我不确定对src/main/conf
目录或类似内容的开箱即用支持,除非您找到它,否则请使用以下解决方法:
packageArchetype.java_application
mappings in Universal ++= {
((sourceDirectory in Compile).value / "conf" * "*").get.map { f =>
f -> s"conf/${f.name}"
}
}
它将文件映射src/main/conf
到conf
包中的目录。
注意:我很确定我已经在目录的代码支持中的某个地方看到过。conf
默认的通用约定是复制 src/univeral/ 下的文件/目录。因此,要在发行版中包含一个 conf/ 目录,只需添加 src/universal/conf 并在那里复制配置文件。信用:这个链接
这似乎是一个“更好”的答案,因为我将 sbt 与 sbt-native-packager 插件一起使用:
mappings in Universal ++= contentOf( baseDirectory.value / "conf" )
这将获取指定“conf”文件夹下的所有文件并将它们转储到包根文件夹中。
它使用了我在 sbt-native-packager 中非常简洁的文档中偶然发现的MappingsHelper 。