2016-03-01 50 views
1

我在同一個項目中多個模塊使得該結構是沿着線somethign導入項目/ dependencies.scala:無法使用有效的SBT

Root 
- ProjA 
- ProbB 
- ProjC 
build.sbt 

我與所有的一個build.sbt在項目的根源細節,它是笨重的,當我需要給某人ProjB時,我們遇到了問題。

然後,我在Effective SBT上找到了一篇文章和幻燈片,並認爲這聽起來像是一個很好的解決方案。但是,實施並不容易。

我更新的結構是這樣的:依賴的

Root 
- ProjA 
--build.props 
--dependencies.scala 
-ProjA 
--build.props 
--dependencies.scala 
build.sbt 

例如:

object Dependencies { 

    //specific versions (if required) use '% name-version' to add to the dependency 

    //libraries 
    val scalaTest  = "org.scalatest" % "scalatest_2.10" % "2.2.6" 
    val slf4j   = "org.slf4j" % "slf4j-log4j12" % "1.7.13" 
    val akkaActor  = "com.typesafe.akka" % "akka-actor_2.10" % "2.3.14" 
    val akkaTest  = "com.typesafe.akka" % "akka-testkit_2.10" % "2.3.14" 
    val awsCloudwatch = "com.amazonaws" % "aws-java-sdk-cloudwatch" % 

"1.10.28" 
    val cloudwatchDependencies = Seq(awsCloudwatch, akkaActor, akkaTest) 

那麼我想在我build.sbt利用這一點,但它不會讓我要導入的文件

在build.sbt我:

lazy val cloudwatch = (project in file("cloudwatch")). 
    settings(commonSettings: _*). 
    settings(
name := "Cloudwatch", 
libraryDependencies += cloudwatchDependencies 

但我無法導入或拾取依賴關係。我錯過了什麼明顯的錯誤?這是正確的/錯誤的方法?

感謝您的幫助/諮詢

回答

1

的配置對象需要居住在一個特殊的地方:/project。 如果你移動他們那裏一切都應該沒問題。

看到:http://www.scala-sbt.org/0.13.5/docs/Getting-Started/Multi-Project.html#common-code

如果你想有一個每個項目配置,可以爲每個項目單獨build.sbt。這種方法帶來了額外的收益,它是解決這個問題的慣用方式。

的設置看起來是這樣的:

root 
-build.sbt 
-cloudwatch.sbt 
- ProjA 
--build.sbt 
-ProjB 
--build.sbt 

如果您還需要更多的粒度,將有可能有幾個*.sbt文件,這些文件都將被包含在build.sbt

​​
+0

喜, 感謝您抽出時間回覆。當你說特殊的地方......在IntelliJ中,我有一個「project [projName-build](sources root)」,旁邊有一個藍色的scala圖標,你的意思是 – null

+1

你很漂亮,謝謝!只是彈出它在那裏,瞧!所有的紅色波浪走了!再次感謝!!! :d – null