У меня есть несколько вопросов о SBT:SBT, пару вопросов: dependsOn
1) Я задаюсь вопросом, почему есть возможность использовать пункт «dependOn». Я полностью понимаю, что он присоединяется к проектам.
lazy val projectA = Project("A", file("a"))
lazy val projectB = Project("B", file("b")).dependsOn(projectA)
Что мне не нравится в этом коде: вы не можете указать версию Projecta в projectB. он всегда агрегирует последнее состояние projectA. Зачем разделить приложение на мультипроект, если каждый подпроект тесно связан друг с другом?
Существует еще один вариант. Мы можем опубликовать подпроект в бинарном репозитории с версией и добавить его как зависимость в настройках.
Почему бы не использовать этот код:
lazy val projectA = project("A", file("a"))
lazy val projectB = Project("B", file("b")).settings(libraryDependencies ++= Seq("groupOfA" %% "A" % "versionOfA"))
Кауса, вы должны иметь бинарные хранилища для этого. Но это не проблема, вы можете установить локальную локальную сеть (она поддерживает почти все и бесплатно использовать) или использовать oss.sonatype.org.
2) Этот вопрос связан с первым вопросом, я не понимаю, почему существует задача «publishLocal». Поскольку я знаю, что SBT использует репозиторий Ivy2, но когда вы публикуете свой проект в nexus или oss.sonatype.org, вы публикуете его в maven2 repo. И проблема возникает, когда sbt обнаруживает локально опубликованную и кэшированную из maven. Это порождает ошибки. Я думаю, что это ошибка sbt (https://github.com/sbt/sbt/issues/2687). Я больше не использую publishLocal, я не понимаю, почему бы вам не установить бинарный репозиторий на вашем компьютере, если вы хотите разделить ваше приложение на несколько компонентов.
Благодарим за ответ –