Добавление /etc/<application> в путь к классам в sbt-native-packager для debian:package-bin
Поэтому я использую packageArchetype.java_server и настраиваю свои отображения так, чтобы файлы из "src / main / resources" помещались в мою папку "/ etc /" в пакете debian. Я использую "sbt debian:package-bin" для создания пакета
Проблема в том, что когда я использую "sbt run", он получает src / main / resources из classpath. Как правильно заставить 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 ответ
Я выбрал немного другой подход. Поскольку sbt-native-packager хранит эти два файла (application.conf и logback.xml) в моем jar-файле распространения пакета, я действительно просто хотел перезаписать (или объединить) эти файлы из / etc. Я сохранил два сопоставления выше и просто добавил следующее:
SRC / главная / шаблоны / и т.д. по умолчанию:
-Dmyapplication.config=/etc/${{app_name}}/application.conf
-Dlogback.configurationFile=/etc/${{app_name}}/logback.xml
Затем в моем коде (используя библиотеки Typesafe Config):
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.