需要插件版本

此规则强制所有插件都定义了一个版本,在 pom 或父 pom 的 plugin 或 pluginManagement 部分中。

此规则支持以下参数:

  • message - 如果规则失败,则向用户发送可选消息。
  • banLatest - 禁止任何使用“LATEST”作为任何插件的版本。默认 = 真。
  • banRelease - 禁止任何使用“RELEASE”作为任何插件的版本。默认 = 真。
  • banSnapshots - 禁止使用任何 SNAPSHOT 插件。默认 = 真。
  • banTimestamps - 禁止使用任何带有时间戳版本的快照插件(仅在 banSnapshots 为 true 时启用)。默认 = 真。
  • 阶段 - 应该用于查找生命周期插件绑定的阶段的逗号分隔列表。默认值为“清理、部署、站点”。
  • additionalPlugins - 要强制执行的附加插件列表具有版本。这些插件可能不在 poms 中,但无论如何都会使用,例如 help、eclipse 等。插件应以以下形式指定:group:artifactId。
  • unCheckedPluginList - 以逗号分隔的插件列表以跳过版本检查。即不允许版本,或快照等。插件应以以下形式指定:group:artifactId。

示例插件配置(显示一些默认值,可以跳过默认值):

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>enforce-plugin-versions</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requirePluginVersions>
                   <message>Best Practice is to always define plugin versions!</message>
                   <banLatest>true</banLatest>
                   <banRelease>true</banRelease>
                   <banSnapshots>true</banSnapshots>
                   <phases>clean,deploy,site</phases>
                   <additionalPlugins>
                     <additionalPlugin>org.apache.maven.plugins:maven-eclipse-plugin</additionalPlugin>
                     <additionalPlugin>org.apache.maven.plugins:maven-reactor-plugin</additionalPlugin>
                   </additionalPlugins>
                   <unCheckedPluginList>org.apache.maven.plugins:maven-enforcer-plugin,org.apache.maven.plugins:maven-idea-plugin</unCheckedPluginList>
                </requirePluginVersions>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>