关于maven插件版本标签

Posted

技术标签:

【中文标题】关于maven插件版本标签【英文标题】:About maven plugin version tag 【发布时间】:2015-06-08 06:36:11 【问题描述】:

我们都知道,当我们在mavenpom.xml中使用插件或依赖时,我们必须给出GAV(groupId, artifactId, version)。那个maven可以知道你想要什么插件或依赖。 例如:

<!-- generate source plugin -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.4</version>
    <!-- ...others config -->
</plugin>

但是,如果我这样写: 例如:

<!-- generate source plugin -->
<plugin>
    <artifactId>maven-source-plugin</artifactId>
    <!-- ...others config -->
</plugin>

没错!为什么?Maven 说我们必须给出 GAV?为什么我只给出 A 是对的?

所以我想知道如果我不给G和V,那maven会用什么G或V?

【问题讨论】:

【参考方案1】:

您不必指定版本的原因是因为它继承自 Maven 超级 POM (http://maven.apache.org/guides/introduction/introduction-to-the-pom.html)。这个超级 POM 有一个 maven-source-plugin 的定义,它指定了要使用的版本。

如果你声明了其他没有在超级POM中声明的依赖或插件,那么版本是必需的。但是请注意,最好在自己的 pom.xml 中明确声明要使用的插件版本,以使您的构建更具可重复性。

在这种情况下您可以省略组 ID,因为如果未指定 groupId,maven 将搜索org.apache.maven.plugins 作为 groupId。所以这只适用于使用这个组 id 的官方 Maven 插件。

【讨论】:

groupId 定义在pom.xsd 非常感谢!我知道了!

以上是关于关于maven插件版本标签的主要内容,如果未能解决你的问题,请参考以下文章

关于 Maven 版本插件

Maven 发布插件 - 准备创建快照版本而不是发布版本的标签

如何在 Maven 发布插件上禁用标签创建

gradle-release 插件 + maven 发布插件

如何在 Maven 发布插件中设置 SCM 标签?

Maven 发布插件 - 在发布中跳过快照版本更新:准备步骤