2017-01-10 27 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版本。