gpt4 book ai didi

scala - 当我将 sbt 默认 scala 库更改为 scala 2.11.2 时,找不到 sbt 0.13.1 多项目模块

转载 作者:行者123 更新时间:2023-12-04 16:47:28 24 4
gpt4 key购买 nike

我使用 sbt 0.13.1 创建了这两个模块,我创建了 project/MyBuild.scala 来编译这两个模块。MyBuild.scala:

import sbt._
import Keys._
object MyBuild extends Build {
lazy val task = project.in(file("task"))
lazy val root = project.in(file(".")) aggregate(task) dependsOn task
}

当我通过设置 scalaHome 将 scala 库更改为 2.11.2 时。它会去maven下载task.jar并失败,这很奇怪。是 sbt 错误吗?

里面有github测试项目地址:test-sbt-0.13.1

最佳答案

这是因为您在主 build.sbt 中定义了自定义 scalaVersion,这意味着它仅为根项目定义。任务项目将使用默认值:

jjst@ws11:test-sbt-0.13.1$ sbt                                                                                                                
[...]
> projects
[info] In file:/home/users/jjost/dev/test-sbt-0.13.1/
[info] * root
[info] task
> show scalaVersion
[info] task/*:scalaVersion
[info] 2.10.4
[info] root/*:scalaVersion
[info] 2.11.2-local

因此,任务子项目生成的工件将无法供根项目使用。

您可以通过确保您的项目使用相同的 scalaVersion 来解决这个问题。在保持相同项目结构的同时,最简单的方法是在项目之间共享通用设置,例如 Scala 版本,如下所示:

object MyBuild extends Build {
val commonSettings = Seq(
scalaVersion := "2.11.2-local",
scalaHome := Some(file("/usr/local/scala-2.11.2/"))
)

lazy val task = (project.in(file("task"))).
settings(commonSettings: _*)

lazy val root = (project.in(file("."))).
settings(commonSettings: _*).
aggregate(task).
dependsOn(task)
}

在实践中,您可能希望将项目之间共享的通用设置放在 project/common.scala 下的专用文件中,如 Effective sbt 中的建议.

关于scala - 当我将 sbt 默认 scala 库更改为 scala 2.11.2 时,找不到 sbt 0.13.1 多项目模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25972466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com