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



所以我使用packagearchettype .java_server并设置我的映射,以便"src/main/resources"中的文件进入debian软件包中的"/etc/"文件夹。我使用"sbt debian:package-bin"来创建包

问题是当我使用"sbt run"时,它会从类路径中获取src/main/资源。如何让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"   
)
....

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

src/main/模板/etc-default:

 -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使用的系统属性。

最新更新