Как ссылаться на внешний проект sbt из другого sbt-проекта?
У меня есть следующая настройка приложения Scala и общей основной библиотеки: root
-> /ApplicationA -> /project -> /build.sbt -> /CoreLibrary -> /project -> /build.sbt
Я хочу добавить ссылку из ApplicationA в ссылку на CoreLibrary для проекта Eclipse, так что каждый раз, когда CoreLibrary меняет ApplicationA, также создается. Я пробовал следующее содержимое build.Scala для ApplicationA:
val core = Project( id = "platform-core", base = file("../CoreLibrary")) val main = Project(id = "application, base = file(".")).dependsOn(core)
Однако при компиляции ApplicationA SBT жалуется, что зависимость может быть только подкаталогом !!:
- Как записать файл в Scala?
- Что такое «контекст» в Scala?
- вызов четкой и карты вместе бросает NPE в искровую библиотеку
- Как я повторяю RDD в искры apache (scala)
- Возможно ли использовать asynchronous вызов jdbc?
java.lang.AssertionError: assertion failed: Directory C:\git\CoreLibrary is not contained in build root C:\git\ApplicationA
Это кажется совершенно простым, каков правильный способ иметь зависимость от этого проекта?
- Как разбить фрейм данных на dataframes с одинаковыми значениями столбцов?
- Скала и прямые ссылки
- Как передать массив Scala в метод Scala vararg?
- Синтаксис сахара: _ * для лечения Seq как параметры метода
- Многострочный литерал функции в качестве аргументов в Scala
- Scala эквивалент Java java.lang.Class Объект
- Конструктор перегрузки для classов Case Scala?
- Каково формальное различие между Scala между скобками и круглыми скобками и когда они должны использоваться?
Вы можете сделать исходную зависимость от своего проекта следующим образом:
lazy val core = RootProject(file("../CoreLibrary")) val main = Project(id = "application", base = file(".")).dependsOn(core)
У меня есть рабочий пример с многомодульной сборкой: https://github.com/ahoy-jon/play2MultiModule/blob/master/playapp/project/Build.scala
Но я думаю, что правильный путь (это зависит от вашего контекста) заключается в создании
-> /project/ -> Build.scala -> /ApplicationA -> /project -> /build.sbt -> /CoreLibrary -> /project -> /build.sbt
ссылаясь на два проекта и зависимости между ними.
С sbt 0.12.1 кажется возможным получить простую ссылку на проект:
Я использовал ProjectRef
вместо RootProject
http://www.scala-sbt.org/0.12.1/api/sbt/ProjectRef.html
ProjectRef(file("../util-library"), "util-library")
sbt-eclipse также работает.
Начиная с sbt 0.13 , вы можете создавать многопроектные определения непосредственно в .sbt
без необходимости Build.scala
файла Build.scala
.
Поэтому достаточно добавить следующее в ApplicationA / project / build.sbt .
lazy val core = RootProject(file("../CoreLibrary")) val main = Project(id = "application", base = file(".")).dependsOn(core)