我在同一个项目中有很多模块,这样的结构就像以下几行一样:
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
)
但我无法导入或获取依赖项。我错过了一些明显错误的东西吗?这是正确/错误的方法吗?
感谢您提供任何帮助/建议
答案 0 :(得分: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
root
-build.sbt
- ProjA
--build.sbt
-ProjB
--build.sbt