2014-10-02 7 views
5

कुछ हद तक इस question के समान, एक उप परियोजना में कस्टम सेटिंग का संदर्भ कैसे दे सकता है।उप-परियोजनाओं में कस्टम एसबीटी सेटिंग का संदर्भ कैसे लें

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 रों) नहीं देख सकते हैं, भले ही वे एक ही निर्माण का हिस्सा हैं।

हालांकि, निर्माण में सभी .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._ 

और आप के लिए तैयार हैं।

संबंधित मुद्दे