(длинный вопрос вперед. Упрощенный tl; dr внизу).Использование зависимостей между двумя проектами ScalaJS SBT
У меня есть два ScalaJS проектов, построенных с SBT - "MyApp" и "MyLib", в следующей структуре каталогов
root/build.sbt
root/myapp/build.sbt
root/myapp/jvm/
root/myapp/js/
root/myapp/shared/
root/mylib/build.sbt
root/mylib/jvm
root/mylib/js
root/mylib/shared
lib
экспортирует артефакт под названием "com.example: MyLib: 0,1", который, как используется как libraryDependency для myapp
.
myapp и mylib находятся в отдельных хранилищах, содержат свои собственные файлы сборки и должны быть способны быть полностью раздельными (то есть они должны содержать собственную конфигурацию собственной сборки).
В производстве они будут построены отдельно с mylib
, которые будут опубликованы в качестве артефакта maven перед зданием myapp
отдельно.
В разработке, однако, я хочу, чтобы иметь возможность объединить их в родительский проект SBT, чтобы оба варианта могли быть разработаны параллельно, без необходимости использования publishLocal
после каждого изменения. Проект
В традиционной (не scalajs) это было бы довольно легко
$ROOT/build.sbt:
lazy val mylib = project
lazy val myapp = project.dependsOn(mylib)
Однако в ScalaJS, мы на самом деле есть два проекта, внутри каждого модуля - appJVM
, appJS
, libJVM
и libJS
. Таким образом, приведенная выше конфигурация только находит общий проект корня и неправильно применяет конфигурацию dependsOn
к фактическим проектам JVM и JS.
(т.е. MyApp и MyLib build.sbt каждый из которых содержит два проекта, и совокупный корень проекта)
В идеале я хотел бы быть в состоянии сделать что-то вроде следующего
lazy val mylibJVM = project
lazy val myappJVM = project.dependsOn(mylibJVM)
lazy val mylibJS = project
lazy val myappJS = project.dependsOn(myappJS)
К сожалению, этот просто создает новые проекты внутри корня вместо импорта самих подпроектов.
Я также пробовал различные комбинации путей (например)
lazy val mylibJVM = project.in(file("mylib/jvm"))
Но это не видит конфигурации в файле build.sbt в mylib
В конце концов я продолжаю сталкиваясь с той же проблема - при импорте существующего многопроектного проекта SBT в родительский файл sbt он импортирует корневой проект, но, похоже, не предоставляет способ импортировать подпроект из существующего многомодового файла SBT таким образом, чтобы я мог добавить конфигурацию dependsOn
к нему.
Т.Л., др
Если у меня есть
root/mylib/build.sbt
с несколькими проектами, определенных иroot/myapp/build.sbt
с несколькими проектами, определенных
Можно ли импортировать отдельные подпроекты в root/build.sbt
вместо корневого проекта из подмодуля?
Возможно, у меня есть два уровня многопроектных сборок.
Мои scalajs и SBT знания ровно год, и я не знаю, когда раскол между JVM и JS была введена для scalajs проектов, или даже то, что это означает, но с моим плагином 0.6.4, я хотел бы сделать это: 1) Создайте задачу копир, которая зависит от fastOptJs задачи Lib и копии выхода из Lib к приложению 2) сделать fastOptJs задачу приложения зависят от этого Позвольте мне знать, если это частично помогает в этом случае я может попытаться помочь больше. – 0fnt