3

我使用 sbt 0.13.5 构建一个项目,其中包含一些在部署后需要人工编辑的配置文件。

使用sbt-native-packagerstage命令构建我的基本输出目录结构以进行部署。这会产生一个bin包含启动脚本的文件夹和一个文件夹中的所有 jar lib。伟大的。

这只留下文本配置文件,应该conf逐字复制到bin/和文件夹旁边的lib/文件夹中(不包含在任何 jar 中)。

如何使用 sbt 将这些配置文件复制到文件系统上的输出目录(而不是任何 jars)?

4

3 回答 3

4

我不确定对src/main/conf目录或类似内容的开箱即用支持,除非您找到它,否则请使用以下解决方法:

packageArchetype.java_application

mappings in Universal ++= {
  ((sourceDirectory in Compile).value / "conf" * "*").get.map { f => 
    f -> s"conf/${f.name}"
  }
}

它将文件映射src/main/confconf包中的目录。

注意:我很确定我已经在目录的代码支持中的某个地方看到过。conf

于 2014-08-18T22:10:58.847 回答
3

默认的通用约定是复制 src/univeral/ 下的文件/目录。因此,要在发行版中包含一个 conf/ 目录,只需添加 src/universal/conf 并在那里复制配置文件。信用:这个链接

于 2015-04-20T16:16:53.967 回答
1

这似乎是一个“更好”的答案,因为我将 sbt 与 sbt-native-packager 插件一起使用:

mappings in Universal ++= contentOf(  baseDirectory.value / "conf" )

这将获取指定“conf”文件夹下的所有文件并将它们转储到包根文件夹中。

它使用了我在 sbt-native-packager 中非常简洁的文档中偶然发现的MappingsHelper 。

于 2014-08-21T04:43:46.053 回答