2015-07-07 13 views
5

Sto cercando di passare gli argomenti della riga di comando al mio JAR creato con sbt-assembly. Nessuno di questi -Dconfig.file=application.conf-Dconfig.trace=loadsArgomenti 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)?

+0

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?) –

+0

vuoi dire? config.resource invece di config.file forse? –

+0

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 –

risposta

14

(risposta estrarre dai commenti)

JVM opzioni come -D deve venire prima di jar

config.file è un file esterno e config.resource è una risorsa nel classpath.

+1

Fantastico. java -Dconfig.file = blah.conf -jar googleScraper-assembly-0.0.1.jar ha funzionato! –

+0

Risparmiato molto tempo grazie a questa risposta! –

+0

Ho gli stessi problemi! Anche dopo aver fatto esattamente quello che è stato detto qui, non ho potuto farlo funzionare! Ecco cosa sto facendo: http://stackoverflow.com/questions/43983335/scala-standalone-jar-with-a-conf-folder – sparkr

Problemi correlati