2014-10-02 18 views
5

Hơi giống với question này, cách tham chiếu cài đặt tùy chỉnh trong một dự án phụ.Cách tham chiếu Cài đặt SBT tùy chỉnh trong các tiểu dự án

Trong 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")) 

Trong tiết kiệm/build.sbt:

name := "thrift" 

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

Trả lời

8

.sbt file không thể nhìn thấy các định nghĩa (ví dụ, val s) trong .sbt file khác, ngay cả khi họ là một phần của cùng một bản dựng.

Tuy nhiên, tất cả .sbt tệp trong một bản dựng có thể xem/nhập nội dung của các tệp project/*.scala. Vì vậy, bạn sẽ phải khai báo của bạn val finagleVersion trong một file .scala:

project/CustomKeys.scala:

import sbt._ 
import Keys._ 

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

Bây giờ, trong .sbt tập tin của bạn, chỉ cần

import CustomKeys._ 

và bạn tốt để đi.

Các vấn đề liên quan