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文件。我见过超过3000行的POM文件。考虑到1)最近DSL的热度和2)对XML的恐惧,很多人不喜欢Maven正是因为它的pom.xml冗长而繁琐。

但是,即使你是一个喜欢XML严格性和优雅性的XML粉丝(就像我自己一样),你也不会喜欢在每个项目的pom.xml中重复自己的必要性。如果你正在处理多个项目,代码重复将是巨大的。一个平均的Java Web应用程序使用了几十个标准的Maven插件和几乎相同数量的常见依赖项,比如JUnit、Apache Commons、Log4J、Mockito等等。它们都有各自的版本和配置,如果你想保持项目的稳定性并避免Maven的警告,就必须指定它们。因此,一旦一个插件的新版本发布,你就必须遍历你正在工作的所有项目的pom.xml文件并在其中更新它。你显然了解代码重复意味着什么。这是一场灾难。然而,有一个解决方案。

jcabi-parent是一个非常简单的Maven依赖项,除了一个包含多个预配置的依赖项、配置文件和插件的大型pom.xml外,里面什么都没有。为了在你的项目中重复使用它们,你只需要将com.jcabi:parent定义为你的父POM。

这就是你所需要的。现在你可以从pom.xml中删除大部分的自定义配置,依赖于jcabi-parent提供的默认配置。它的pom.xml相当大且配置得当。多个项目都依赖它,所以你可以确信你使用的是所有标准插件的最佳配置。

以下是一些使用jcabi-parent的项目的pom.xml示例(你可以看到它们是多么简洁):Xembly ReXSL jcabi-http Qulice

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

sixnines availability badge   GitHub stars