2015-06-15 14 views
5

A, B ve A, B olarak adlandırılan 2 özel sbt ayarını A, B'ye bağlı bir içerikle tanımlayın, birkaç yapılandırma kapsamından farklı bir A tanımlayın. B'nin her seferinde B'nin sadece bir kez tanımlanmış olmasına rağmen, sonuçta ortaya çıkan B değeri farklı olur. bu bağlı olduğu"Geçerli" yapılandırmadaki bir ayara nasıl bağlanır

object MyBuild extends Build { 

    lazy val remote = config("remote") describedAs ("configuration for remote environement ") 

    lazy val targetHost = settingKey[String]("private hostname of master server") 

    lazy val scriptContent = settingKey[String]("Some deployment script") 

    lazy val root: Project = Project("meme", file(".")). 
    settings(
     name := "hello", 

     targetHost := "localhost", 
     targetHost in remote := "snoopy", 

     scriptContent := s""" 
      # some bash deployment here 
      /usr/local/uberDeploy.sh ${targetHost.value} 
     """ 
    )  
} 

her iki yapılandırma kapsamları farklı bir değer olması scriptContent gibi, ancak:

diğer yapılandırma daha remote farklı tanımlanan, aşağıdaki örnekte targetHost için düşünün ve scriptContent buna bağlı olarak

> scriptContent 
[info] 
[info]    # some bash deployment here 
[info]    /usr/local/uberDeploy.sh localhost 
[info] 
> remote:scriptContent 
[info] 
[info]    # some bash deployment here 
[info]    /usr/local/uberDeploy.sh localhost 
[info] 

aşağıdaki elde etmek istiyorum Oysa: Global kapsamında targetHost üzerindeki değeri her zaman aynıdır:

> scriptContent 
[info] 
[info]    # some bash deployment here 
[info]    /usr/local/uberDeploy.sh localhost 
[info] 
> remote:scriptContent 
[info] 
[info]    # some bash deployment here 
[info]    /usr/local/uberDeploy.sh snoopy 
[info] 
+0

:

import sbt._ import sbt.Keys._ object MyBuild extends Build { lazy val remote = config("remote") describedAs ("configuration for remote environement ") lazy val targetHost = settingKey[String]("private hostname of master server") lazy val scriptContent = settingKey[String]("Some deployment script") lazy val scriptSettings = Seq( scriptContent := s""" # some bash deployment here /usr/local/uberDeploy.sh ${targetHost.value} """ ) lazy val root: Project = Project("meme", file(".")) .settings( name := "hello", targetHost := "localhost", targetHost in remote := "snoopy" ) .settings(scriptSettings: _*) .settings(inConfig(remote)(scriptSettings) :_*) } 

beklenen sonucu verir. Örneğin, her iki kapsamda iki 'scriptContent 'öğesini, diğerinde bir' ve 'basit' targetHost 'içinde' targetHost uzaktan' ile uygulayın. – marios

cevap

0

Benim sorum aslında bir çift (üzgünüm ...), ve en alakalı cevap burada: How can i make an SBT key see settings for the current configuration?

=> Yeniden değerlendirmeyi zorlamak için ayarları her kapsam için bir kez, birden çok kez uygulamanız gerekir scriptSetting içeriğinin: Ben açıkça görevin kapsamını belirlemek gerekiyor galiba

> scriptContent 
[info] 
[info]    # some bash deployment here 
[info]    /usr/local/uberDeploy.sh localhost 
[info] 
> remote:scriptContent 
[info] 
[info]    # some bash deployment here 
[info]    /usr/local/uberDeploy.sh snoopy 
[info] 
> 
İlgili konular