2014-10-16 20 views
15

Pubblicare su un repository Nexus interno. Abbiamo due repository, "dev" e "production". Gli sviluppatori usano il repository di sviluppo, il team di build utilizza il repository di produzione a cui accedono dai computer in un'area protetta. Vorrei aggiungere una variabile di ambiente o configurazione SBT che definisce STAGE con un valore predefinito di "dev". Sulle scatole di produzione, STAGE sarebbe stato sostituito dalla "produzione". Come posso fare questo? Sono in grado di definire la fase del mio file build.sbt e usarla nel compito publishTo, non riesco proprio a capire come ottenere il valore dall'ambiente. Ecco quello che ho.SBT: come accedere alla variabile di ambiente o alla configurazione?

val stage = settingKey[String]("stage") 

stage := "dev" 

publishTo <<= (version, stage) { (v: String, s: String) => 
    val nexus = "http://my-internal-nexus:8081/nexus/content/repositories/" 
    if (v.trim.endsWith("SNAPSHOT")) 
    Some("snapshots" at nexus + s + "-snapshots-m2") 
    else 
    Some("releases" at nexus + s + "-releases-m2") 
} 
+0

possibile duplicato di [Come leggere le variabili di ambiente in Scala] (http://stackoverflow.com/questions/9997292/how-to-read-environment-variables-in-scala) –

risposta

28

È possibile passare tappa di una proprietà di sistema e leggere in un ambiente:

stage := sys.props.getOrElse("stage", default = "dev") 

Usa sbt -Dstage=production passare questo nel vostro ambiente di generazione.

+2

Questa risposta non copre il caso in cui 'STAGE' è una variabile di ambiente –

Problemi correlati