当`dependOn`为本地项目时,未解决的依赖关系

时间:2017-01-10 17:45:53

标签: scala sbt

我有一个使用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文件,但我无法让它工作。我究竟做错了什么?我需要重新开始我的项目吗?

1 个答案:

答案 0 :(得分:1)

您尚未为当前项目指定scalaVersion,默认为2.10。对于您的外部项目,您已从scalaVersion系列中指定了一些2.11。您可以在工件的名称中看到这一点:externalproject_2.10,其中_2.10后缀代表工件构建的Scala版本。您的外部项目没有为Scala 2.10提供工件,因此出现此错误。由于Scala主要版本不是二进制兼容的,因此您无法依赖它们进行组合。

要解决此问题,请在build.sbtscalaVersion := "2.11.8"中指定Scala版本。