Как стать автором
Обновить

Комментарии 9

Дело конечно каждого, лично я больше за вложенную структуру проекта, визуально более понятно, прозрачное наследование, зависимости:


androidApp/
|-- app
|   |-- launcher
|   |   |-- src
|   |   `-- pom.xml
|   |-- screen
|   |   |-- src
|   |   `-- pom.xml
|   `-- pom.xml
|-- distrib
|   |-- assembly
|   |   |-- src
|   |   |   `-- assembly
|   |   `-- pom.xml
|   |-- deploy
|   |   `-- pom.xml
|   `-- pom.xml
|-- lib
|   |-- src
|   |   |-- androidTest
|   |   |   `-- java
|   |   |-- main
|   |   |   |-- aidl
|   |   |   |-- assets
|   |   |   |-- import
|   |   |   |-- java
|   |   |   |-- res
|   |   |   `-- AndroidManifest.xml
|   |   `-- test
|   |       `-- java
|   `-- pom.xml
`-- pom.xml

Да, конечно, проект может иметь несколько уровней вложенности, например, https://bitbucket.org/JRS/open-flexess/src. Но я и в этом случае придерживаюсь правила — создавать каталог для узловых "pom" файлов по причинам, изложенным выше в статье. Но у вашего варианта есть одно большое преимущество — он стандартный :)

На самом деле описанный мной способ и указанный в статье, оба являются стандартами — aggregation и inheritance, со своими особенностями. Просто лично я предпочитаю аггрегацию=)

Да, вот только, из вашего примера не было ясно, что в дочерних помах нету ссылок на родителя — только структура каталогов — а она как раз самая, что ни на есть классическая :) Что касается наследования и агрегирования, то мне ближе наследование между иерархией (деревом) супер помов и проектами (пример 1), тогда как внутри проектов я предпочитаю комбинацию агрегирования и наследования, как в 5 примере.

Опа…
Пойду перечитывать документацию — у меня подмена понятий произошла, поскольку я тоже использую комбинирование, только в качестве парента корневой от агрегации и суперпом на нем как парент, а не bom.
Подходит ли такая структура для разработки библиотек? Так, при публикации артефакта родительский pom-файл в Maven-репозиторий не попадает. Далее, когда этот артефакт указывается как зависимость некоего приложения, версии транзитивных зависимостей начинают плавать. Есть ли способ элегантно решить эту проблему? Мне в голову ничего не приходит умнее, чем скопировать секцию dependencyManagement из родительского pom библиотеки в pom приложения.
Это решается использованием flatten-maven-plugin. Подробнее здесь: habr.com/ru/company/1c/blog/449172 и мой комментарий как раз на эту тему: habr.com/ru/company/1c/blog/449172/#comment_20082432
Вроде работает. Спасибо!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации