Писали ли pom.xml самостоятельно или использовали шаблоны
Что проверяют
Понимаете ли вы, откуда в проекте берутся версии библиотек, или сборка для вас чёрный ящик, настроенный кем-то однажды. Смысл прикладной: когда прилетит конфликт версий и NoSuchMethodError на проде, разбираться придётся вам.
Как отвечать
Честный ответ обычно смешанный: новый сервис начинается с шаблона команды или стартера, а дальше файл правится руками. Покажите, что понимаете содержимое:
- координаты
groupId,artifactId,versionи тип упаковки; parentили импорт спецификации версий вdependencyManagement: версии задаются один раз в одном месте, в самих зависимостях версия не пишется;- области видимости:
providedдля того, что даёт контейнер,testдля тестовых библиотек,runtimeдля драйверов; - плагины: компилятор с указанием версии языка,
surefireдля модульных тестов,failsafeдля интеграционных, плагин сборки исполняемого артефакта; - профили под окружения и
propertiesс версиями.
Отдельно скажите про разрешение конфликтов: Maven выбирает версию, ближайшую к корню дерева зависимостей, поэтому транзитивная библиотека может незаметно уехать назад. Разбор через mvn dependency:tree, лечение через управление версиями и точечные exclusions.
Где спотыкаются
Прописывают версию в каждой зависимости. Через полгода в проекте три версии одной библиотеки, и в сборку попадает та, что оказалась ближе в дереве, а не та, которую имели в виду.
Второе: отвечают «использовал шаблон» и не могут объяснить, зачем в нём parent и как переопределить пришедшую оттуда версию. Это ровно та ситуация, которую вопрос и выявляет.
Третье: держат в проекте зависимости с меткой снимка и удивляются, почему сборка вчера собиралась, а сегодня нет. Воспроизводимость требует фиксированных версий, снимки допустимы только внутри активной разработки.