2017-01-10 2 views
0

У меня есть проект scala, который создается с использованием sbt. Я хочу импортировать другой проект, который также создается с использованием 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, чтобы иметь возможность импортировать файлы scala в external-project, но я не могу заставить его работать. Что я делаю не так? Нужно ли мне ограничивать мой проект?

+0

Не могли бы вы заменить 'RootProject (файл (./ external-project /")) 'on' file ("external-project") 'и повторить попытку? – tkachuko

+0

Я попробовал это изначально; единственное различие заключается в том, что '/...../my-project/build.sbt:4: warning: method fileToRef в объекте Ссылка устарела: Явно заверните файл в вызов RootProject. .dependsOn (файл ("./ fpga-tidbits /")) 'написано выше того, что я написал в качестве вывода. – MartinHaTh

+0

Можете ли вы также поделиться определением проекта «внешний проект»? – tkachuko

ответ

1

Вы не указали scalaVersion для текущего проекта, и по умолчанию он равен 2.10. Для вашего внешнего проекта вы указали scalaVersion из серии 2.11. Вы можете увидеть это в имени артефакта: externalproject_2.10, где суффикс _2.10 означает версию Scala, с которой был создан артефакт. Ваш внешний проект не обеспечивает артефакт для Scala 2.10, следовательно, эта ошибка. Поскольку основные выпуски Scala не совместимы с двоичными файлами, вы не можете комбинировать их с зависимостями.

Чтобы исправить это, укажите версию Scala в build.sbt: scalaVersion := "2.11.8".

Смежные вопросы