【发布时间】:2017-07-15 03:36:28
【问题描述】:
我们有一个项目,其中有几个子项目可以在 Scala 2.10 和 2.11 下编译,一个子项目只能在 2.10 下编译(实际上是 Scala-Virtualized 2.10.2),一个子项目只能在 2.11 下编译。有没有一种简单的方法来创建一个聚合项目,它可以为 2.10 和 2.11 交叉构建所有可能的子项目?或者,为 2.10 和 2.11 设置不同的默认项目?
特别是here is current Build.scala。如果我将lmsBackend 添加到root,我得到
> show scalaVersion
[info] common/*:scalaVersion
[info] 2.10.4
[info] lms-backend/*:scalaVersion
[info] 2.10.2
[info] meta/*:scalaVersion
[info] 2.10.4
[info] community-edition/*:scalaVersion
[info] 2.10.4
[info] core/*:scalaVersion
[info] 2.10.4
[info] scalan/*:scalaVersion
[info] 2.10.4
> show crossScalaVersions
[info] common/*:crossScalaVersions
[info] List(2.10.4, 2.11.5)
[info] lms-backend/*:crossScalaVersions
[info] List(2.10.2)
[info] meta/*:crossScalaVersions
[info] List(2.10.4, 2.11.5)
[info] community-edition/*:crossScalaVersions
[info] List(2.10.4, 2.11.5)
[info] core/*:crossScalaVersions
[info] List(2.10.4, 2.11.5)
[info] scalan/*:crossScalaVersions
[info] List(2.10.4, 2.11.5)
SBT 能够在这个聚合项目上很好地运行 update、compile 等。但是,一旦我尝试任何交叉构建,事情就会中断:
> +update
[info] Setting version to 2.10.4
[info] Reapplying settings...
[info] Set current project to scalan (in build file:/home/aromanov/IdeaProjects/scalan-lite/)
...
[info] Updating {file:/home/aromanov/IdeaProjects/scalan-lite/}lms-backend...
[info] Resolving org.scala-lang.virtualized#scala-library;2.10.4 ...
[warn] module not found: org.scala-lang.virtualized#scala-library;2.10.4
...
[info] Resolving org.scala-lang.virtualized#scala-compiler;2.10.4 ...
[warn] module not found: org.scala-lang.virtualized#scala-compiler;2.10.4
...
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: UNRESOLVED DEPENDENCIES ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: org.scala-lang.virtualized#scala-library;2.10.4: not found
[warn] :: org.scala-lang.virtualized#scala-compiler;2.10.4: not found
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn]
[warn] Note: Unresolved dependencies path:
[warn] org.scala-lang.virtualized:scala-library:2.10.4 ((sbt.Classpaths) Defaults.scala#L1169)
[warn] +- com.huawei.scalan:lms-backend_2.10:0.2.6-SNAPSHOT
[warn] org.scala-lang.virtualized:scala-compiler:2.10.4
[warn] +- com.huawei.scalan:lms-backend_2.10:0.2.6-SNAPSHOT
[trace] Stack trace suppressed: run last lms-backend/*:update for the full output.
[error] (lms-backend/*:update) sbt.ResolveException: unresolved dependency: org.scala-lang.virtualized#scala-library;2.10.4: not found
[error] unresolved dependency: org.scala-lang.virtualized#scala-compiler;2.10.4: not found
[error] Total time: 2 s, completed Jan 28, 2015 1:33:49 PM
show scalaVersion 现在为所有子项目显示2.10.4。有什么方法可以在聚合项目中包含lms-backend 并且仍然避免这个问题?
【问题讨论】:
-
你找到答案了吗?我问stackoverflow.com/questions/27929272/…,试图解决类似的问题。
-
@PaulDraper 不幸的是,我仍然很想这样做。