2014-10-02 123 views
5

與此有點類似question,如何在子項目中引用自定義設置。如何在子項目中引用自定義SBT設置

在build.sbt:

import sbt.Keys._ 

val finagleVersion = settingKey[String]("Defines the Finagle version") 

val defaultSettings = Defaults.coreDefaultSettings ++ Seq(
    finagleVersion in ThisBuild := "6.20.0", 
    organization in ThisBuild := "my.package",  
    scalaVersion in ThisBuild := "2.10.4", 
    version in ThisBuild := "0.1-SNAPSHOT" 
) 

lazy val root = project.in(file(".")).aggregate(thrift).settings(
    publishArtifact in (Compile, packageBin) := false, 
    publishArtifact in (Compile, packageDoc) := false, 
    publishArtifact in (Compile, packageSrc) := false 
) 

lazy val thrift = project.in(file("thrift")) 

在節儉/ build.sbt:

name := "thrift" 

// doesn't work 
libraryDependencies ++= Seq(
    "com.twitter" %% "finagle-thriftmux" % (finagleVersion in LocalRootProject).value 
) 

回答

8

.sbt文件不能看到其他.sbt文件的定義(例如,val S),即使他們是同一個版本的一部分。

但是,構建中的所有.sbt文件都可以看到/導入project/*.scala文件的內容。所以,你必須聲明你val finagleVersion.scala文件:

project/CustomKeys.scala

import sbt._ 
import Keys._ 

object CustomKeys { 
    val finagleVersion = settingKey[String]("Defines the Finagle version") 
} 

現在,在.sbt文件,只需

import CustomKeys._ 

,你是好去。

相關問題