当我将 sbt 默认 scala 库更改为 scala 2.11.2 时,未找到 sbt 0.13.1 多项目模块 [英] sbt 0.13.1 multi-project module not found when I change the sbt default scala library to scala 2.11.2

查看:39
本文介绍了当我将 sbt 默认 scala 库更改为 scala 2.11.2 时,未找到 sbt 0.13.1 多项目模块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I use the sbt 0.13.1 create the two modules, and I create project/MyBuild.scala to compile this two modules. 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的bug吗?

When I change the scala library to 2.11.2 by set scalaHome. It will go to maven download the task.jar and failed, that's very strange. Is it a sbt bug?

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

There is the github test project address: test-sbt-0.13.1

推荐答案

我建议您将根项目的源从根目录移动到子文件夹 (task2),并将它们作为聚合添加.它将删除聚合和依赖于同一个项目:

I'd recommend you to move the sources of root project from root to subfolder (task2), and add them as aggregated. It will remove aggregating and depending on same project:

object MyBuild extends Build {
          lazy val task = project.in(file("task"))
          lazy val task2 = project.in(file("task2")) dependsOn task
          lazy val root = project.in(file(".")) aggregate(task, task2) 
}

这对我有用,但奇怪的是,这种非标准的项目结构在默认 scalaHome 下也能正常工作.好像是sbt解决external这样的依赖的方式有问题.

This works for me, but it's strange that such non-standard project structure works fine with default scalaHome. Seems to be a problem in the way in which sbt resolves such dependency as external.

附言这个答案并没有涵盖整个故事.请参阅@jjst 的回答以澄清更多信息.

P.S. This answer doesn't cover the whole story. See @jjst's answer to clarify more.

这篇关于当我将 sbt 默认 scala 库更改为 scala 2.11.2 时,未找到 sbt 0.13.1 多项目模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆