Как ссылаться на внешний проект 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 жалуется, что зависимость может быть только подкаталогом !!:

 java.lang.AssertionError: assertion failed: Directory C:\git\CoreLibrary is not contained in build root C:\git\ApplicationA 

Это кажется совершенно простым, каков правильный способ иметь зависимость от этого проекта?

Вы можете сделать исходную зависимость от своего проекта следующим образом:

  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) 
  • Динамический миксин в Scala - возможно ли это?
  • Scala: Список в будущее без учета неудачных фьючерсов
  • Объяснение метода складки искры RDD
  • Полезность (как в практических приложениях) Currying vs Partial Application в Scala
  • Ошибка кодирования при попытке сопоставить строку dataframe с обновленной строкой
  • Доступ к базовому ActorRef streamа akka Источник, созданный Source.actorRef
  • Запуск пользовательской задачи автоматически до / после стандартной задачи
  • Как я могу прочитать большой файл CSV с classом Scala Stream?
  • Почему неизменный Набор Скала не ковариант в своем типе?
  • В чем разница между подclassами типа self-types и trait?
  • Параметры конструктора classа scala
  • Interesting Posts

    Как изменить начальный экран Windows

    Не удается открыть конфигурацию маршрутизатора DWR-112

    Lollipop: рисовать позади statusBar с его цветом, установленным на прозрачный

    Использование моего собственного корпуса вместо movie_reviews corpus для classификации в NLTK

    Что такое геттеры и сеттеры для classов ECMAScript 6?

    В нескольких приложениях используется один и тот же контент-провайдер

    Bat-файл, чтобы отключить адаптер ethernet, а затем повторно использовать его после входа в Windows

    Приложение для автоматического запуска после завершения загрузки в Android

    Время восстановления системы занимает больше места.

    @Basic (необязательно = false) vs @Column (nullable = false) в JPA

    Выключение компьютеров всей сети

    Ищете эквивалент C # scanf

    Как выбрать «последний ребенок» с определенным именем classа в CSS?

    Сравнение свойств объекта в c #

    Получить / выбрать изображение из встроенного приложения Gallery для Android

    Давайте будем гением компьютера.