blob: 78e27d9da65ee202d283220f77445ae9b7c82b12 [file] [log] [blame]
~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements. See the NOTICE file
~~ distributed with this work for additional information
~~ regarding copyright ownership. The ASF licenses this file
~~ to you under the Apache License, Version 2.0 (the
~~ "License"); you may not use this file except in compliance
~~ with the License. You may obtain a copy of the License at
~~
~~ http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing,
~~ software distributed under the License is distributed on an
~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~~ KIND, either express or implied. See the License for the
~~ specific language governing permissions and limitations
~~ under the License.
------
Require Plugin Versions
------
Brian Fox
------
Novemer 2007
------
Require Plugin Versions
This rule enforces that all plugins have a version defined, either in the plugin or pluginManagement section of the pom or a parent pom.
The following parameters are supported by this rule:
* message - an optional message to the user if the rule fails.
* banLatest - disallow any use of "LATEST" as a version for any plugin. Default = true.
* banRelease - disallow any use of "RELEASE" as a version for any plugin. Default = true.
* banSnapshots - disallow any use of SNAPSHOT plugins. Default = true.
* banTimestamps - disallow any use of snapshot plugins with timestamp version (only enabled when banSnapshots is true). Default = true.
* phases - The comma separated list of phases that should be used to find
lifecycle plugin bindings. The default value is "clean,deploy,site".
* additionalPlugins - A list of additional plugins to enforce have versions. These
are plugins that may not be in the poms but are used anyway, like help, eclipse etc.
The plugins should be specified in the form: group:artifactId.
* unCheckedPluginsList - A comma separated list of plugins to skip version checking. Ie allow no version, or snapshots, etc. The plugins should be specified in the form: group:artifactId.
[]
Sample Plugin Configuration (showing some defaults, defaults can be skipped):
+---+
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.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>
</requirePluginVersions>
<unCheckedPluginsList>org.apache.maven.plugins:maven-enforcer-plugin,org.apache.maven.plugins:maven-idea-plugin</unCheckedPluginsList>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
+---+