我有一个使用sbt
构建的scala项目。我想导入另一个项目,该项目也是使用sbt
构建的,并且在我的机器上是本地的。
我的项目结构如下:
my-project/build.sbt
my-project/external-project/
my-project/external-project/build.sbt
my-project/external-project/...
my-project/src/test
my-project/src/main
my-project/...
我的build.sbt
看起来像这样:
lazy val root = Project("my-project", file("."))
.dependsOn(RootProject(file("./external-project/")))
.settings(
...
)
这就是sbt "compile"
给我的
[warn] Binary version (2.11) for dependency org.scala-lang#scala-library;2.11.8
[warn] in my-project#my-project_2.10;0.1-SNAPSHOT differs from Scala binary version in project (2.10).
[info] Resolving externalproject#externalproject.10;0.1 ...
[warn] module not found: externalproject#externalproject.10;0.1
[warn] ==== local: tried
[warn] /home/martin/.ivy2/local/externalproject/externalproject_2.10/0.1/ivys/ivy.xml
[warn] ==== public: tried
[warn] https://repo1.maven.org/maven2/externalproject/externalproject_2.10/0.1/externalproject_2.10-0.1.pom
[info] Resolving com.github.scopt#scopt_2.11;3.5.0 ...
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: UNRESOLVED DEPENDENCIES ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: externalproject#externalproject_2.10;0.1: not found
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn]
[warn] Note: Unresolved dependencies path:
[warn] externalproject:externalproject_2.10:0.1
[warn] +- my-project:my-project_2.10:0.1-SNAPSHOT
外部项目是一个git子模块。这两个项目都没有以任何方式使用Maven。
我只希望my-project
中的文件能够导入external-project
中的scala文件,但我无法让它工作。我究竟做错了什么?我需要重新开始我的项目吗?
答案 0 :(得分:1)
您尚未为当前项目指定scalaVersion
,默认为2.10
。对于您的外部项目,您已从scalaVersion
系列中指定了一些2.11
。您可以在工件的名称中看到这一点:externalproject_2.10
,其中_2.10
后缀代表工件构建的Scala版本。您的外部项目没有为Scala 2.10提供工件,因此出现此错误。由于Scala主要版本不是二进制兼容的,因此您无法依赖它们进行组合。
要解决此问题,请在build.sbt
:scalaVersion := "2.11.8"
中指定Scala版本。