我有一个scala项目,它是使用sbt构建的。我想导入另一个项目,它也是使用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文件,但我无法让它工作。我做错了什么?我需要重新构造我的项目吗?
发布于 2017-01-10 21:27:07
您还没有为当前项目指定scalaVersion,它默认为2.10。对于您的外部项目,您已经从scalaVersion系列中指定了一些2.11。您可以在工件的名称中看到这一点:externalproject_2.10,其中_2.10后缀代表构建工件的Scala版本。您的外部项目没有为Scala2.10提供工件,因此出现了此错误。由于Scala主要版本不是二进制兼容的,所以不能按依赖性组合它们。
要解决这个问题,请在build.sbt:scalaVersion := "2.11.8"中指定Scala版本。
https://stackoverflow.com/questions/41575102
复制相似问题