2017-01-10 24 views
0

我有一个使用sbt构建的scala项目。我想导入另一个项目,这个项目也是使用sbt构建的,并且在我的机器上是本地的。当dependOn一个本地项目时,无法解析依赖关系

我的项目结构如下:

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

你可以在文件(“external-project”)上替换'RootProject(file(“./ external-project /”))''然后再试一次吗? – tkachuko

+0

我最初尝试过;唯一的区别是不推荐在对象引用中使用/...../my-project/build.sbt:4:warning:method fileToRef:在调用RootProject时显式包装文件。 .dependsOn(file(“./ fpga-tidbits /”))'写在我发布为输出的东西上面。 – MartinHaTh

+0

你也可以分享'external-project'的项目定义吗? – tkachuko

回答

1

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

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