Ich versuche, Befehlszeilenargumente an meine mit sbt-assembly
erstellte JAR zu übergeben. Keines dieser -Dconfig.file=application.conf
noch -Dconfig.trace=loads
Befehlszeilenargumente, die nicht für sbt-assembly jars funktionieren
Mein genaue Befehl ist
java -jar googleScraper-assembly-0.0.1.jar -Dconfig.trace=loads -Dconfig.resource=application.conf
Das ist mein build.sbt
lazy val googleScraper = project.in(file("google-data-scraper"))
.settings(commonSettings:_*)
.settings(
version := "0.0.1",
assemblyMergeStrategy in assembly := {
case m if m.toLowerCase.endsWith("manifest.mf") => MergeStrategy.discard
case m if m.toLowerCase.matches("meta-inf.*\\.sf$") => MergeStrategy.discard
case "log4j.properties" => MergeStrategy.discard
case m if m.toLowerCase.startsWith("meta-inf/services/") => MergeStrategy.filterDistinctLines
case "reference.conf" => MergeStrategy.concat
case "application.conf" => MergeStrategy.concat
case _ => MergeStrategy.first
},
libraryDependencies ++= Seq(
"com.typesafe" % "config" % "1.3.0",
"com.typesafe.play" % "play_2.11" % "2.3.9",
"com.typesafe.play" % "play-ws_2.11" % "2.3.9",
"com.ning" % "async-http-client" % "1.8.15"
),
fork in run := true
)
.dependsOn("util")
.dependsOn("core")
bearbeiten
So stellt sich heraus, dass das Argument setzen bevor der -jar einen Unterschied macht. Dies funktioniert jetzt:
java -Dconfig.trace=loads -Dconfig.resource=blah.conf -jar googleScraper-assembly-0.0.1.jar
aber nun das Laden zeigt an, dass die App versucht, die neue Konfiguration aus dem JAR zu laden. Wie kann ich es komplett extern laden lassen (absoluter Pfad hat nicht funktioniert)?
Was ist die genaue Befehlszeile, die Sie verwenden, um das auszuführen? Wenn es nicht funktioniert, woher weißt du (was wird ausgegeben?) Wie sieht der Code zum Laden der Config in der App aus (ConfigFactory.load() ohne Parameter oder etwas Komplexeres?) –
meinst du? config.resource statt config.file vielleicht? –
Danke! Hinzugefügt die genaue Befehlszeile. Die Ausgabe ist entweder, dass sie die Ressourcendatei nicht findet (wenn ich sie ausschließe), oder sie verwendet nicht die Überschreibungen, wenn ich eine in das Jar eingebettet habe. Ich bekomme keine Trace-Nachrichten. Mein Ladecode ist nur faul ConfigFactory.load(). Ich habe sowohl config.file und config.resource ausprobiert, aber keinen Unterschied machen –