将/ etc / <application>添加到sbt-native-packager中的类路径中,用于debian:package-bin </application>

时间:2014-03-17 22:44:18

标签: sbt deb sbt-native-packager

所以我使用packageArchetype.java_server并设置我的映射,以便来自&#34; src / main / resources&#34;进入我的&#34; / etc /&#34; debian包中的文件夹。我正在使用&#34; sbt debian:package-bin&#34;创建包

麻烦的是当我使用&#34; sbt run&#34;它从类路径中获取src / main / resources。什么是让sbt-native-packager给/ etc /作为我的配置和日志记录文件的资源类路径的正确方法?

plugins.sbt:

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.7.0-M2")

build.sbt

...

packageArchetype.java_server

packageDescription := "Some Description"

packageSummary := "My App Daemon"

maintainer := "Me<me@example.org>"

mappings in Universal ++= Seq(
   file("src/main/resources/application.conf") -> "conf/application.conf",
   file("src/main/resources/logback.xml") -> "conf/logback.xml"   
)

....

1 个答案:

答案 0 :(得分:3)

我采取了略微不同的方法。由于sbt-native-packager将这两个文件(application.conf和logback.xml)保存在我的包分发jar文件中,我真的只想要一种方法来覆盖(或合并)/ etc中的这些文件。我保留了上面的两个映射,并添加了以下内容:

的src /主/模板/ ETC-默认:

 -Dmyapplication.config=/etc/${{app_name}}/application.conf
 -Dlogback.configurationFile=/etc/${{app_name}}/logback.xml

然后在我的代码中(使用Typesafe配置库):

lazy val baseConfig = ConfigFactory.load //defaults from src/resources

//For use in Debain packaging script. (see etc-default)
val systemConfig = Option(System.getProperty("myapplication.config")) match {
  case Some(cfile) => ConfigFactory.parseFile(new File(cfile)).withFallback(baseConfig)
  case None => baseConfig
}

当然-Dlogback.configuration是Logback使用的系统特性。