Sto cercando di passare gli argomenti della riga di comando al mio JAR creato con sbt-assembly
. Nessuno di questi -Dconfig.file=application.conf
né -Dconfig.trace=loads
Argomenti della riga di comando non funzionanti per i contenitori sbt-assembly
mio comando esatto è
java -jar googleScraper-assembly-0.0.1.jar -Dconfig.trace=loads -Dconfig.resource=application.conf
Questo è il mio 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")
Modifica
Così scopre che mettere l'argomento prima che il -jar faccia un altro. Questo funziona ora:
java -Dconfig.trace=loads -Dconfig.resource=blah.conf -jar googleScraper-assembly-0.0.1.jar
ma ora il carico indica che l'applicazione sta tentando di caricare la nuova configurazione all'interno del JAR. Come posso farlo caricarlo completamente esternamente (il percorso assoluto non ha funzionato)?
Qual è l'esatta riga di comando che usi per eseguire questo? Quando non funziona, come fai a sapere (cosa viene emesso?) Che aspetto ha il codice per caricare la configurazione all'interno dell'app (ConfigFactory.load() senza parametri o qualcosa di più complesso?) –
vuoi dire? config.resource invece di config.file forse? –
Grazie! Aggiunta la riga di comando esatta. L'output è che non trova il file di risorse (quando lo escludo) o non usa le sostituzioni quando ne ho uno incorporato nel jar. Non ricevo alcun messaggio di traccia. Il mio codice di caricamento è solo ConfigFactory.load() pigro. Ho provato sia config.file che config.resource ma non faccio nessuna differenza –