You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2007/11/14 11:49:03 UTC
svn commit: r594831 -
/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
Author: brianf
Date: Wed Nov 14 02:49:02 2007
New Revision: 594831
URL: http://svn.apache.org/viewvc?rev=594831&view=rev
Log:
add banning of plugin snapshots
Modified:
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
Modified: maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java?rev=594831&r1=594830&r2=594831&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java (original)
+++ maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java Wed Nov 14 02:49:02 2007
@@ -30,6 +30,7 @@
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
+import java.util.regex.Matcher;
import org.apache.maven.BuildFailureException;
import org.apache.maven.artifact.Artifact;
@@ -89,17 +90,12 @@
public String message;
/**
- * The message to be printed in case the condition
- * returns <b>true</b>
- *
- * @required
- * @parameter
+ * Don't allow the LATEST identifier
*/
public boolean banLatest = true;
/**
- * The message to be printed in case the condition
- * returns <b>true</b>
+ * Don't allow the RELEASE identifier
*
* @required
* @parameter
@@ -107,6 +103,11 @@
public boolean banRelease = true;
/**
+ * Don't allow snapshot plugins.
+ */
+ public boolean banSnapshots = true;
+
+ /**
* The comma separated list of phases that should be
* used to find lifecycle plugin bindings. The default
* value is "clean,deploy,site".
@@ -114,15 +115,16 @@
* @parameter
*/
public String phases = "clean,deploy,site";
-
+
/**
- * Additional plugins to enforce have versions. These are plugins that may not be
- * in the poms but are used anyway, like help, eclipse etc.
- * <br>
- * The plugins should be specified in the form: group:artifactId.
+ * Additional plugins to enforce have versions. These
+ * are plugins that may not be in the poms but are used
+ * anyway, like help, eclipse etc. <br>
+ * The plugins should be specified in the form:
+ * group:artifactId.
*/
public List additionalPlugins;
-
+
private PluginManager pluginManager;
private Map phaseToLifecycleMap;
@@ -169,9 +171,10 @@
// specified lifecycles
Set allPlugins = getBoundPlugins( life, project, phases );
- //insert any additional Plugins specified by the user.
+ // insert any additional Plugins specified by
+ // the user.
allPlugins = addAdditionalPlugins( allPlugins );
-
+
// there's nothing to do here
if ( allPlugins.isEmpty() )
{
@@ -214,7 +217,7 @@
newMsg.append( plugin.getGroupId() );
newMsg.append( ":" );
newMsg.append( plugin.getArtifactId() );
-
+
try
{
newMsg.append( ". \tThe version currently in use is " );
@@ -232,9 +235,11 @@
}
catch ( Exception e )
{
- //lots can go wrong here. Don't allow any issues trying to determine the issue
- //stop me
- log.debug( "Exception while determining plugin Version.",e );
+ // lots can go wrong here. Don't
+ // allow any issues trying to
+ // determine the issue
+ // stop me
+ log.debug( "Exception while determining plugin Version.", e );
newMsg.append( ". Unable to determine the plugin version." );
}
newMsg.append( "\n" );
@@ -291,39 +296,42 @@
/**
* Add the additional plugins if they don't exist yet
- * @throws MojoExecutionException
+ *
+ * @throws MojoExecutionException
*/
- public Set addAdditionalPlugins(Set existing) throws MojoExecutionException
+ public Set addAdditionalPlugins ( Set existing )
+ throws MojoExecutionException
{
- if (additionalPlugins != null)
+ if ( additionalPlugins != null )
{
Iterator iter = additionalPlugins.iterator();
- while(iter.hasNext())
+ while ( iter.hasNext() )
{
- String pluginString = (String)iter.next();
+ String pluginString = (String) iter.next();
String[] pluginStrings = pluginString.split( ":" );
- if (pluginStrings.length == 2)
+ if ( pluginStrings.length == 2 )
{
Plugin plugin = new Plugin();
plugin.setGroupId( pluginStrings[0] );
plugin.setArtifactId( pluginStrings[1] );
-
- //only add this if it's not already there.
- if (!existing.contains( plugin ))
+
+ // only add this if it's not already
+ // there.
+ if ( !existing.contains( plugin ) )
{
existing.add( plugin );
- }
+ }
}
else
{
- throw new MojoExecutionException("Invalid AdditionalPlugin string: "+ pluginString);
+ throw new MojoExecutionException( "Invalid AdditionalPlugin string: " + pluginString );
}
}
-
+
}
return existing;
}
-
+
/**
* Given a plugin, this will retrieve the matching
* plugin artifact from the model.
@@ -448,12 +456,17 @@
{
return false;
}
+
+ if ( banSnapshots && isSnapshot( plugin.getVersion() ) )
+ {
+ return false;
+ }
// the version was specified and not
// banned. It's ok.
status = true;
- if ( !banRelease && !banLatest )
+ if ( !banRelease && !banLatest && !banSnapshots )
{
// no need to keep looking
break;
@@ -462,6 +475,11 @@
}
}
return status;
+ }
+
+ protected boolean isSnapshot ( String baseVersion )
+ {
+ return Artifact.VERSION_FILE_PATTERN.matcher( baseVersion ).matches();
}
/*