2012-09-03 41 views
2

我有兩個測試配置,我想將其包含在我的所有子項目中。我希望有一個簡單的方法來做到這一點。目前,我將它們添加到每個個人項目中,通過調用這個:在SBT中的所有子模塊中共享配置

.configs(config1, config2) 

爲了確保一些設置都包含在每一個項目,你可以這樣做:

scalaVersion in ThisBuild := "2.10.0" 

還有一個ThisProject目的。我想知道是否可以使用這些對象中的任何一個來爲所有項目添加配置。

+0

不知的事實,沒有人能夠回答這個告訴。 –

+0

我也懷疑只有三個人是否看過這個事實。 –

回答

0

如果您正在使用具有聚合功能的父項目,配置是否不適用於子項目?

object MyBuild extends Build { 
    lazy val root = Project(id="myproject", base=file(".")) 
    .aggregate(sub1, sub2) 
    .configs(config1, config2) 

    lazy val sub1 = Project(id = "sub1", base = file("sub1")) 
    lazy val sub2 = Project(id = "sub2", base = file("sub1")) 
} 

除了「ThisBuild」範圍內,也有一個「全球」範圍可能的工作:enter link description here,但你可以使用項目級插件應用配置 - global configuration with a pluginSBT Plugin page(見示例插件部分)。

1

您可以定義一個Project => Project並傳入項目。使用sbt 0.13,您還可以在build.sbt中定義一個多項目構建。

project/common.scala

import sbt._ 
import Keys._ 

object Common { 
    val Config1 = config("config1") extend(Test) 
    val Config2 = config("config2") extend(Test) 

    def addConfigs(proj: Project): Project = proj.configs(Config1, Config2) 
} 

build.sbt

import Common._ 

lazy val app = addConfigs(project.in(file("app")))