RootProject и ProjectRef

Я пытаюсь найти дополнительную информацию о RootProject и ProjectRef, но похоже, что он вообще не упоминается в документации sbt.

Я понимаю, что если вы ссылаетесь на корневой проект, вы должны использовать RootProject и ProjectRef, когда ссылаетесь на подпроект. Однако неясно, как поведение будет отличаться от них. Может кто-нибудь, пожалуйста, объясните?

Также тот факт, что он не документирован, означает ли это, что RootProject и ProjectRef не рекомендуются для ссылок на другие проекты sbt?

Спасибо.

Ответ 1

У единственной сборки sbt есть один каталог project/ для определения .scala и определения плагина. Внутри этой сборки могут быть несколько подпроектов с собственными .sbt файлами, но не с их собственными project/*.scala файлами.

Если вы хотите включить другие, отдельные сборки напрямую, а не использовать их опубликованные двоичные файлы, вы используете "исходные зависимости". Это то, что объявляют RootProject и ProjectRef. ProjectRef является наиболее общим: вы указываете местоположение сборки (URI) и идентификатор проекта в строке (String), на которую вы хотите зависеть. RootProject - это удобство, которое выбирает корневой проект для сборки в указанном URI.

У исходных зависимостей есть накладные расходы: время запуска, использование памяти и удобство использования командной строки. Если группа проектов не должна быть отдельной, лучше всего использовать единую сборку со стандартными подпроектами.