Предполагая, что A
и B
полностью отделенны строит (это не только multi-project build, как у вас есть несколько .sbt
файлов), это возможно, только если A
сборка физически находятся внутри B
.
1) Если вам нужен A-источники будут доступны для B-источников:
- B
- build.sbt
- A
- build.sbt
build.sbt
, то вы можете описать A
's источники в некоторой регулярной B
' проекта s, как:
Б/build.sbt
lazy val a = project in "./A" // or deeply if your sources not in A's root
lazy val b = project in "." dependsOn a
B/A/build.sbt (если вам действительно нужно отдельное строение здесь)
lazy val a = project in "."
Вы можете захотеть поделиться плагин с исходным путем-независимым определением проекта между A
и B
затем, как:
def a(base: String) = Project(base = base, settings = someAsettings)
Вы можете организовать такую структуру с линком (Linux/Mac):
ln -s ../B A
Othe rwise вам нужно вручную опубликовать A
(publishLocal
) в локальный репозиторий плюща и использовать его как внешнюю зависимость.
Если вы используете ссылки Git - symlinks, должны be fine, если участники используют ту же ОС. Другим решением является git submodules или subtree.
2) Если вам нужен код из-источников должны быть доступны внутри B-сборки (не B-источников), то вам нужна структура вроде этого:
- B
- build.sbt
- project
- project
- A
build.sbt
проект внутри проекта на самом деле становится sbt-плагином, поэтому его код доступен для B.
Если вы не хотите менять структуру, то A
должен стать sbt-plugin
, и вам необходимо опубликовать его в локальном репозитории.
Вы должны 'B.aggregate (A)'? http://www.scala-sbt.org/0.12.2/docs/Getting-Started/Multi-Project.html#aggregation – ipoteka
'aggregate' - позволить командам/задачам выполняться в проектах, указанных как агрегированные. Он не устанавливает зависимость класса. См. [Агрегация] (http://www.scala-sbt.org/0.13/tutorial/Multi-Project.html#Aggregation) в официальных документах. –