Don't Repeat Yourself in Maven POMs; Use Jcabi-Parent

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

Maven - это инструмент автоматизации сборки, в основном для Java-проектов. Это отличный инструмент, но у него есть один важный недостаток, который побудил создание подобных инструментов, таких как Gradle и SBT. Этим недостатком является громоздкость конфигурации. Maven получает все параметры сборки проекта из pom.xml, XML-файла, который может быть очень длинным. Я видел POM-файлы из более чем 3 000 строк. Учитывая 1) недавнюю популярность DSL и 2) страх перед XML, логично, что многим людям не нравится Maven из-за громоздкости его pom.xml.

Но даже если вы являетесь поклонником XML, наслаждающимся его строгостью и элегантностью (как и я), вам не понравится необходимость повторяться в pom.xml для каждого проекта. Если вы работаете над несколькими проектами, дублирование кода будет огромным. Среднее Java веб-приложение использует несколько десятков стандартных плагинов Maven и примерно такое же количество распространенных зависимостей, таких как JUnit, Apache Commons, Log4J, Mockito и т. д. Все они имеют свои версии и конфигурации, которые должны быть указаны, если вы хотите сохранить стабильность проекта и избежать предупреждений Maven. Таким образом, после выпуска новой версии плагина вам придется пройти через все файлы pom.xml в проектах, над которыми вы работаете, и обновить его там. Очевидно, вы понимаете, что означает дублирование кода. Это катастрофа. Однако есть решение.

jcabi-parent - это очень простая зависимость Maven, внутри которой нет ничего, кроме большого pom.xml с предварительно настроенными зависимостями, профилями и плагинами. Вам нужно только указать com.jcabi:parent в качестве родительского POM-файла, чтобы использовать все это в своем проекте.

Вот и все, что вам нужно. Теперь вы можете удалить большую часть ваших пользовательских конфигураций из pom.xml и полагаться на значения по умолчанию, предоставленные jcabi-parent. Его pom.xml достаточно большой и правильно настроенный. Несколько проектов зависят от него, поэтому вы можете быть уверены, что вы используете наилучшую возможную конфигурацию всех стандартных плагинов.

Вот несколько примеров pom.xml из проектов, которые используют jcabi-parent (вы можете увидеть, насколько компактны они): Xembly ReXSL jcabi-http Qulice

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-17 at 15:31

sixnines availability badge   GitHub stars