2014-12-29 3 views
1

SBT를 처음 사용하고 다중 모듈 프로젝트를 설정하려고합니다. 나는 전체 모듈에 사용되는 libs에 대한 버전을 정의 할 수있는 단일 장소를 원한다. 나는 사용자 정의 settingKey을 만드는 다음 시도 - 루트 프로젝트에 : 나는 다음과 같은 시도sbt 다중 모듈 프로젝트 글로벌 버전 설정

프로젝트에서
val akkaVersion = SettingKey[String]("Akka version used in our project") 

name := "hello-app" 

version in ThisBuild := "1.0.0" 

organization in ThisBuild := "com.jaksky.hello" 

scalaVersion := "2.10.4" 

akkaVersion in ThisBuild:= "2.3.4" 

// Common settings/definitions for the build 

def OurProject(name: String): Project = (
    Project(name, file(name)) 
) 

lazy val common = (
    OurProject("common") 
) 

lazy val be_services = (
    OurProject("be-services") 
    dependsOn(common) 
) 

수-서비스 :

libraryDependencies ++= Seq(
    "com.typesafe.akka" %% "akka-actor" % akkaVersion.value, 
    "com.typesafe.akka" %% "akka-cluster" % akkaVersion.value, 
    "com.typesafe.akka" %% "akka-kernel" % akkaVersion.value, 
    "com.typesafe.akka" %% "akka-remote" % akkaVersion.value, 
    "com.typesafe.akka" %% "akka-slf4j" % akkaVersion.value, 
    "ch.qos.logback" % "logback-classic" % "1.0.13" 
) 

요점은 여기 akkaVersion를 찾을 수 없습니다 (akkaVersion이 보이지 않는 것입니다 - 그것이 오류 메시지입니다.)

내 questins :

  • 이 설정이 모듈을 건너 공유 맵? 설명 된 문제는 아마도 답변 일 것입니다 -> NO
  • 이 상황에서 가장 좋은 방법은 무엇입니까?

    1. 스칼라 객체 잡고 문자열 상수 :

나는 다음과 같은 가능성을 발견했다. 프로젝트 버전이 build.sbt에 지정되어 있으므로 종속 libs가 project/GlobalVersions.scala의 어딘가에 숨겨져 있어야하는 이유는 다소 부담 스럽습니다.

  • libDepenDency seq를 재사용 할 수 있습니다. 이는 유연성을 제한하고 언급 된 libs에 항상 의존하기를 원하지 않습니다.
  • 사용자 정의 설정은 조금 무거워 보이지만 내게는 claean 방식으로 보이지만 작동시키지 못했습니다. 나는 이것이 내가이 문제를 직면 한 첫 번째 아니다 근본적인 문제는 너무하다고 생각 SBT 0.13.5

    를 사용하여 -

  • 은 그냥 사진을 완료합니다. .sbt 파일에

    답변

    2

    정의를 저를 도와 주셔서

    덕분에 다른 .sbt 파일에 표시되지 않습니다. .sbt 파일간에 코드를 공유하려면 build root의 project/디렉토리에 하나 이상의 Scala 파일을 정의하십시오.

    [문서에서 http://www.scala-sbt.org/]

    관련 문제