[SCM] Maven build rule execution framework branch, upstream, updated. upstream/1.0.beta2-1-gcabc746

Torsten Werner twerner at alioth.debian.org
Mon Sep 12 20:50:59 UTC 2011


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Maven build rule execution framework".

The branch, upstream has been updated
       via  cabc746eeabb073508097ea07113699f3c77f2b9 (commit)
      from  235f0b30aa19db8052900414b653846111d16a93 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 enforcer-api/pom.xml                               |    4 +-
 .../maven/enforcer/rule/api/EnforcerRule.java      |   30 +-
 .../enforcer/rule/api/EnforcerRuleException.java   |   20 +-
 .../enforcer/rule/api/EnforcerRuleHelper.java      |   57 ++--
 enforcer-api/src/site/apt/index.apt                |    2 +-
 ...ustom-rule.apt => writing-a-custom-rule.apt.vm} |   26 +-
 enforcer-rules/pom.xml                             |   35 +-
 enforcer-rules/src/it/requirePlugins1/goals.txt    |    1 -
 enforcer-rules/src/it/requirePlugins1/pom.xml      |   56 ---
 .../src/it/requirePluginsReports/goals.txt         |    1 -
 .../src/it/requirePluginsReports/pom.xml           |  413 --------------------
 .../src/it/requirePluginsUnchecked/goals.txt       |    1 -
 .../src/it/requirePluginsUnchecked/pom.xml         |   61 ---
 .../plugins/enforcer/AbstractBanDependencies.java  |   56 ++-
 .../enforcer/AbstractNonCacheableEnforcerRule.java |   17 +-
 .../plugins/enforcer/AbstractRequireFiles.java     |   38 +-
 .../enforcer/AbstractStandardEnforcerRule.java     |    4 +-
 .../plugins/enforcer/AbstractVersionEnforcer.java  |   22 +-
 .../apache/maven/plugins/enforcer/AlwaysFail.java  |   11 +-
 .../apache/maven/plugins/enforcer/AlwaysPass.java  |   11 +-
 .../maven/plugins/enforcer/BannedDependencies.java |   45 ++-
 .../maven/plugins/enforcer/BannedPlugins.java}     |   94 +++---
 .../enforcer/DefaultEnforcementRuleHelper.java     |   28 +-
 .../plugins/enforcer/DependencyConvergence.java    |  190 +++++++++
 .../enforcer/EnforcerExpressionEvaluator.java      |    8 +-
 .../maven/plugins/enforcer/EvaluateBeanshell.java  |    9 +-
 .../apache/maven/plugins/enforcer/NoSnapshots.java |   12 +-
 .../plugins/enforcer/RequireActiveProfile.java     |   10 +-
 .../plugins/enforcer/RequireFilesDontExist.java    |   10 +-
 .../maven/plugins/enforcer/RequireFilesSize.java   |   15 +-
 .../maven/plugins/enforcer/RequireJavaVersion.java |   12 +-
 .../plugins/enforcer/RequireMavenVersion.java      |   10 +-
 .../plugins/enforcer/RequireNoRepositories.java    |   53 ++-
 .../apache/maven/plugins/enforcer/RequireOS.java   |   46 ++--
 .../plugins/enforcer/RequirePluginVersions.java    |  103 +++---
 .../maven/plugins/enforcer/RequireProperty.java    |    8 +-
 .../maven/plugins/enforcer/RequireReleaseDeps.java |   77 +++-
 .../plugins/enforcer/RequireReleaseVersion.java    |   10 +-
 .../enforcer/utils/DependencyVersionMap.java       |  122 ++++++
 .../plugins/enforcer/utils/EnforcerRuleUtils.java  |   37 +-
 .../plugins/enforcer/utils/PluginWrapper.java      |   23 +-
 .../site/apt/{alwaysFail.apt => alwaysFail.apt.vm} |    2 +-
 .../site/apt/{alwaysPass.apt => alwaysPass.apt.vm} |    2 +-
 ...dDependencies.apt => bannedDependencies.apt.vm} |    6 +-
 .../src/site/apt/dependencyConvergence.apt.vm      |  118 ++++++
 ...luateBeanshell.apt => evaluateBeanshell.apt.vm} |    4 +-
 enforcer-rules/src/site/apt/index.apt              |    6 +-
 .../apt/{noSnapshots.apt => noSnapshots.apt.vm}    |    2 +-
 ...sDontExist.apt => requireFilesDontExist.apt.vm} |    8 +-
 ...uireFilesExist.apt => requireFilesExist.apt.vm} |    8 +-
 ...equireFilesSize.apt => requireFilesSize.apt.vm} |   15 +-
 ...reJavaVersion.apt => requireJavaVersion.apt.vm} |    2 +-
 ...MavenVersion.apt => requireMavenVersion.apt.vm} |    2 +-
 ...positories.apt => requireNoRepositories.apt.vm} |    2 +-
 .../site/apt/{requireOS.apt => requireOS.apt.vm}   |    6 +-
 ...inVersions.apt => requirePluginVersions.apt.vm} |    6 +-
 ...{requireProperty.apt => requireProperty.apt.vm} |   14 +-
 enforcer-rules/src/site/apt/requireReleaseDeps.apt |   77 ----
 .../src/site/apt/requireReleaseDeps.apt.vm         |  119 ++++++
 ...aseVersion.apt => requireReleaseVersion.apt.vm} |    6 +-
 .../maven/plugins/enforcer/EnforcerTestUtils.java  |   19 +-
 .../maven/plugins/enforcer/MockPathTranslator.java |   13 +-
 .../plugins/enforcer/MockPlexusContainer.java      |   87 ++--
 .../apache/maven/plugins/enforcer/MockProject.java |  336 ++++++++--------
 .../plugins/enforcer/MockRuntimeInformation.java   |    8 +-
 .../enforcer/TestAbstractVersionEnforcer.java      |   11 +-
 .../maven/plugins/enforcer/TestAlwaysFail.java     |    3 +-
 .../maven/plugins/enforcer/TestAlwaysPass.java     |   19 +
 .../plugins/enforcer/TestBannedDependencies.java   |   11 +-
 .../plugins/enforcer/TestEvaluateBeanshell.java    |    5 +-
 .../maven/plugins/enforcer/TestMavenVersion.java   |    7 +-
 .../maven/plugins/enforcer/TestNoSnapshots.java    |   13 +-
 .../plugins/enforcer/TestRequireFilesSize.java     |   11 +-
 .../plugins/enforcer/TestRequireJavaVersion.java   |    7 +-
 .../enforcer/TestRequireNoRepositories.java        |   60 +++
 .../maven/plugins/enforcer/TestRequireOS.java      |    5 +-
 .../enforcer/TestRequirePluginVersions.java        |   67 ++--
 .../plugins/enforcer/TestRequireProperty.java      |    9 +-
 .../plugins/enforcer/TestRequireReleaseDeps.java   |   29 +-
 .../enforcer/TestRequireReleaseVersion.java        |   15 +-
 .../utils/MockEnforcerExpressionEvaluator.java     |    7 +-
 .../enforcer/utils/TestEnforcerRuleUtils.java      |   15 +-
 .../utils/TestMockEnforcerExpressionEvaluator.java |    5 +-
 .../child/pom.xml                                  |    4 +-
 .../pom.xml                                        |    8 +-
 .../child/pom.xml                                  |    4 +-
 .../pom.xml                                        |    8 +-
 maven-enforcer-plugin/pom.xml                      |   40 ++-
 .../src/it/always-fail/invoker.properties          |    1 +
 .../{site/fml/faq.fml => it/always-fail/pom.xml}   |   48 ++-
 .../{site/fml/faq.fml => it/always-pass/pom.xml}   |   48 ++-
 .../src/it/banned-dependencies-wildcards/pom.xml   |   76 ++++
 .../src/it/banned-dependencies/pom.xml             |   58 +++
 .../fml/faq.fml => it/banned-plugins/pom.xml}      |   49 ++-
 .../src/it/builds_a_pom_noop/module/pom.xml        |   12 +
 .../src/it/builds_a_pom_noop/pom.xml               |   31 ++
 .../src/it/dependencies_converge/module/pom.xml    |   12 +
 .../src/it/dependencies_converge/pom.xml           |   49 +++
 .../dependencies_not_converging/invoker.properties |    1 +
 .../it/dependencies_not_converging/module/pom.xml  |   12 +
 .../src/it/dependencies_not_converging/pom.xml     |   43 ++
 .../invoker.properties                             |    1 +
 .../module/pom.xml                                 |   12 +
 .../dependencies_not_converging_test_scope/pom.xml |   44 ++
 .../src/it/evaluate-beanshell/pom.xml              |   56 +++
 maven-enforcer-plugin/src/it/pom.xml               |    5 +
 .../src/it/require-active-profile/pom.xml          |   65 +++
 .../src/it/require-files-dont-exist/pom.xml        |   58 +++
 .../src/it/require-files-exist/pom.xml             |   58 +++
 .../src/it/require-files-size/pom.xml              |   60 +++
 .../src/it/require-java-version/pom.xml            |   61 +++
 .../src/it/require-maven-version/pom.xml           |   61 +++
 .../src/it/require-no-repositories/pom.xml         |   55 +++
 .../pom.xml                                        |   72 ++++
 .../src/it/require-plugin-versions/pom.xml         |   60 +++
 .../src/it/require-property/pom.xml                |   56 +++
 .../goals.txt                                      |    1 +
 .../require-release-dependencies-excludes/pom.xml  |   44 ++
 .../require-release-dependencies/pom.xml}          |   48 ++-
 .../faq.fml => it/require-release-version/pom.xml} |   48 ++-
 maven-enforcer-plugin/src/it/settings.xml          |   55 +++
 .../apache/maven/plugins/enforcer/EnforceMojo.java |    3 +-
 maven-enforcer-plugin/src/site/apt/index.apt       |   22 +-
 .../src/site/apt/{usage.apt => usage.apt.vm}       |    7 +-
 maven-enforcer-plugin/src/site/fml/faq.fml         |    7 +-
 maven-enforcer-plugin/src/site/site.xml            |    6 +-
 pom.xml                                            |   46 ++-
 127 files changed, 2974 insertions(+), 1496 deletions(-)

diff --git a/enforcer-api/pom.xml b/enforcer-api/pom.xml
index 6a7e1da..ec86c99 100644
--- a/enforcer-api/pom.xml
+++ b/enforcer-api/pom.xml
@@ -24,11 +24,11 @@
   <parent>
     <groupId>org.apache.maven.enforcer</groupId>
     <artifactId>enforcer</artifactId>
-    <version>1.0-beta-2</version>
+    <version>1.0</version>
   </parent>
 
   <artifactId>enforcer-api</artifactId>
-  <version>1.0-beta-2</version>
+  <version>1.0</version>
   <packaging>jar</packaging>
 
   <name>Enforcer API</name>
diff --git a/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRule.java b/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRule.java
index faf5fb2..8992b7e 100644
--- a/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRule.java
+++ b/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRule.java
@@ -1,3 +1,5 @@
+package org.apache.maven.enforcer.rule.api;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,15 +18,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.enforcer.rule.api;
-
-import org.apache.maven.plugin.MojoExecutionException;
 
 /**
  * Interface to be implemented by any rules executed by the enforcer.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
- * @version $Id: EnforcerRule.java 675992 2008-07-11 15:42:48Z hboutemy $
+ * @version $Id: EnforcerRule.java 987781 2010-08-21 16:23:40Z dennisl $
  */
 public interface EnforcerRule
 {
@@ -34,15 +33,14 @@ public interface EnforcerRule
      * containing a reason message if the rule fails the check. The plugin will
      * then decide based on the fail flag if it should stop or just log the
      * message as a warning.
-     * 
+     *
      * @param helper The helper provides access to the log, MavenSession and has
      * helpers to get common components. It is also able to lookup components
      * by class name.
-     * 
-     * @throws MojoExecutionException
+     *
      * @throws EnforcerRuleException the enforcer rule exception
      */
-    public void execute( EnforcerRuleHelper helper )
+    void execute( EnforcerRuleHelper helper )
         throws EnforcerRuleException;
 
     /**
@@ -50,28 +48,28 @@ public interface EnforcerRule
      * the results will be remembered for future executions in the same build (ie children). Subsequent
      * iterations of the rule will be queried to see if they are also cacheable. This will allow the rule to be
      * uncached further down the tree if needed.
-     * 
+     *
      * @return <code>true</code> if rule is cacheable
      */
-    public boolean isCacheable();
+    boolean isCacheable();
 
     /**
      * Checks if cached result is valid.
-     * 
+     *
      * @param cachedRule the last cached instance of the rule. This is to be used by the rule to
      * potentially determine if the results are still valid (ie if the configuration has been overridden)
-     * 
+     *
      * @return <code>true</code> if the stored results are valid for the same id.
      */
-    public boolean isResultValid(EnforcerRule cachedRule);
+    boolean isResultValid( EnforcerRule cachedRule );
 
     /**
      * If the rule is to be cached, this id is used as part of the key. This can allow rules to take parameters
      * that allow multiple results of the same rule to be cached.
-     * 
+     *
      * @return id to be used by the enforcer to determine uniqueness of cache results. The ids only need to be unique
      * within a given rule implementation as the full key will be [classname]-[id]
      */
-    public String getCacheId();
+    String getCacheId();
 
 }
diff --git a/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleException.java b/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleException.java
index 295b6af..ee559cb 100644
--- a/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleException.java
+++ b/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleException.java
@@ -1,3 +1,5 @@
+package org.apache.maven.enforcer.rule.api;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,16 +18,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.enforcer.rule.api;
-
 
 /**
  * An exception occurring during the execution of a rule. Based off of
  * EnforcerRuleException, but separated to keep the rule dependencies to a
  * minimum.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
- * @version $Id: EnforcerRuleException.java 675992 2008-07-11 15:42:48Z hboutemy $
+ * @version $Id: EnforcerRuleException.java 805162 2009-08-17 21:48:52Z hboutemy $
  */
 public class EnforcerRuleException
     extends Exception
@@ -42,7 +42,7 @@ public class EnforcerRuleException
 
     /**
      * Gets the long message.
-     * 
+     *
      * @return the long message
      */
     public String getLongMessage()
@@ -52,7 +52,7 @@ public class EnforcerRuleException
 
     /**
      * Gets the source.
-     * 
+     *
      * @return the source
      */
     public Object getSource()
@@ -63,7 +63,7 @@ public class EnforcerRuleException
     /**
      * Construct a new <code>EnforcerRuleException</code> exception providing
      * the source and a short and long message.
-     * 
+     *
      * @param source the source
      * @param shortMessage the short message
      * @param longMessage the long message
@@ -79,7 +79,7 @@ public class EnforcerRuleException
      * Construct a new <code>EnforcerRuleException</code> exception wrapping
      * an underlying <code>Exception</code> and providing a
      * <code>message</code>.
-     * 
+     *
      * @param message the message
      * @param cause the cause
      */
@@ -92,7 +92,7 @@ public class EnforcerRuleException
      * Construct a new <code>EnforcerRuleException</code> exception wrapping
      * an underlying <code>Throwable</code> and providing a
      * <code>message</code>.
-     * 
+     *
      * @param message the message
      * @param cause the cause
      */
@@ -104,7 +104,7 @@ public class EnforcerRuleException
     /**
      * Construct a new <code>EnforcerRuleException</code> exception providing
      * a <code>message</code>.
-     * 
+     *
      * @param message the message
      */
     public EnforcerRuleException( String message )
diff --git a/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleHelper.java b/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleHelper.java
index 60b8051..f1fe483 100644
--- a/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleHelper.java
+++ b/enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleHelper.java
@@ -1,3 +1,5 @@
+package org.apache.maven.enforcer.rule.api;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.enforcer.rule.api;
 
 import java.util.List;
 import java.util.Map;
@@ -31,9 +32,9 @@ import org.codehaus.plexus.component.repository.exception.ComponentLookupExcepti
  * This is the interface that all helpers will use. This
  * provides access to the log, session and components to the
  * rules.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
- * @version $Id: EnforcerRuleHelper.java 675992 2008-07-11 15:42:48Z hboutemy $
+ * @version $Id: EnforcerRuleHelper.java 805162 2009-08-17 21:48:52Z hboutemy $
  */
 public interface EnforcerRuleHelper
     extends ExpressionEvaluator
@@ -41,81 +42,81 @@ public interface EnforcerRuleHelper
 
     /**
      * Gets the log.
-     * 
+     *
      * @return the log
      */
-    public Log getLog ();
+    Log getLog ();
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.shared.enforcer.rule.api.EnforcerRuleHelper#getRuntimeInformation()
      */
     /**
      * Gets the component.
-     * 
+     *
      * @param clazz the clazz
-     * 
+     *
      * @return the component
-     * 
+     *
      * @throws ComponentLookupException the component lookup exception
      */
-    public Object getComponent ( Class clazz )
+    Object getComponent ( Class clazz )
         throws ComponentLookupException;
 
     /**
      * Gets the component.
-     * 
+     *
      * @param componentKey the component key
-     * 
+     *
      * @return the component
-     * 
+     *
      * @throws ComponentLookupException the component lookup exception
      */
-    public Object getComponent ( String componentKey )
+    Object getComponent ( String componentKey )
         throws ComponentLookupException;
 
     /**
      * Gets the component.
-     * 
+     *
      * @param role the role
      * @param roleHint the role hint
-     * 
+     *
      * @return the component
-     * 
+     *
      * @throws ComponentLookupException the component lookup exception
      */
-    public Object getComponent ( String role, String roleHint )
+    Object getComponent ( String role, String roleHint )
         throws ComponentLookupException;
 
     /**
      * Gets the component map.
-     * 
+     *
      * @param role the role
-     * 
+     *
      * @return the component map
-     * 
+     *
      * @throws ComponentLookupException the component lookup exception
      */
-    public Map getComponentMap ( String role )
+    Map getComponentMap ( String role )
         throws ComponentLookupException;
 
     /**
      * Gets the component list.
-     * 
+     *
      * @param role the role
-     * 
+     *
      * @return the component list
-     * 
+     *
      * @throws ComponentLookupException the component lookup exception
      */
-    public List getComponentList ( String role )
+    List getComponentList ( String role )
         throws ComponentLookupException;
 
     /**
      * Gets the container.
-     * 
+     *
      * @return the container
      */
-    public PlexusContainer getContainer(); 
+    PlexusContainer getContainer();
 }
diff --git a/enforcer-api/src/site/apt/index.apt b/enforcer-api/src/site/apt/index.apt
index 8c13142..5454a6f 100644
--- a/enforcer-api/src/site/apt/index.apt
+++ b/enforcer-api/src/site/apt/index.apt
@@ -28,5 +28,5 @@ Maven Enforcer Rule API - Extending The Loving Iron Fist of Maven\x99
   Custom rules are easy to make with the <<<maven-enforcer-rule-api>>>. These rules can then be invoked with the 
   {{{../../plugins/maven-enforcer-plugin/}maven-enforcer-plugin}}. 
   
-  See {{{./writing-a-custom-rule.html}here}} for instructions on how to make your own rule.
+  See {{{./writing-a-custom-rule.html}Writing a Custom Rule}} for instructions on how to make your own rule.
  
\ No newline at end of file
diff --git a/enforcer-api/src/site/apt/writing-a-custom-rule.apt b/enforcer-api/src/site/apt/writing-a-custom-rule.apt.vm
similarity index 94%
rename from enforcer-api/src/site/apt/writing-a-custom-rule.apt
rename to enforcer-api/src/site/apt/writing-a-custom-rule.apt.vm
index 936f5c0..b168793 100644
--- a/enforcer-api/src/site/apt/writing-a-custom-rule.apt
+++ b/enforcer-api/src/site/apt/writing-a-custom-rule.apt.vm
@@ -34,20 +34,24 @@ Writing a custom rule
   
 +---+
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
+
   <groupId>custom-rule</groupId>
   <artifactId>custom-rule-sample</artifactId>
   <packaging>jar</packaging>
   <version>1.0</version>
+
   <name>My Custom Rule</name>
   <description>This is my custom rule.</description>
+
   <properties>
-    <api.version>1.0-beta-1</api.version>
+    <api.version>${project.version}</api.version>
     <maven.version>2.0.9</maven.version>
   </properties>
-  <build>
-  </build>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.maven.enforcer</groupId>
@@ -82,10 +86,13 @@ Writing a custom rule
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
-      <version>3.8.1</version>
+      <version>3.8.2</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
+
+  <build>
+  </build>
 </project>
 +---+
 
@@ -130,12 +137,12 @@ public class MyCustomRule
         try
         {
             // get the various expressions out of the helper.
-            MavenProject project = (MavenProject) helper.evaluate( "${project}" );
+            MavenProject project = (MavenProject) helper.evaluate( "\${project}" );
             MavenSession session = (MavenSession) helper.evaluate( "${session}" );
-            String target = (String) helper.evaluate( "${project.build.directory}" );
-            String artifactId = (String) helper.evaluate( "${project.artifactId}" );
+            String target = (String) helper.evaluate( "\${project.build.directory}" );
+            String artifactId = (String) helper.evaluate( "\${project.artifactId}" );
 
-            // retrieveany component out of the session directly
+            // retrieve any component out of the session directly
             ArtifactResolver resolver = (ArtifactResolver) helper.getComponent( ArtifactResolver.class );
             RuntimeInformation rti = (RuntimeInformation) helper.getComponent( RuntimeInformation.class );
 
@@ -213,6 +220,7 @@ public class MyCustomRule
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
+        <version>1.0-beta-1</version>
         <dependencies>
           <dependency>
             <groupId>custom-rule</groupId>
diff --git a/enforcer-rules/pom.xml b/enforcer-rules/pom.xml
index 35d21f6..ab3277f 100644
--- a/enforcer-rules/pom.xml
+++ b/enforcer-rules/pom.xml
@@ -24,11 +24,11 @@
   <parent>
     <groupId>org.apache.maven.enforcer</groupId>
     <artifactId>enforcer</artifactId>
-    <version>1.0-beta-2</version>
+    <version>1.0</version>
   </parent>
 
   <artifactId>enforcer-rules</artifactId>
-  <version>1.0-beta-2</version>
+  <version>1.0</version>
   <packaging>jar</packaging>
 
   <name>Enforcer Rules</name>
@@ -52,6 +52,10 @@
       <artifactId>maven-core</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.maven.shared</groupId>
+      <artifactId>maven-common-artifact-filters</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
@@ -81,6 +85,16 @@
       <groupId>easymock</groupId>
       <artifactId>easymock</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.maven.shared</groupId>
+      <artifactId>maven-dependency-tree</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-i18n</artifactId>
+      <version>1.0-beta-6</version>
+    </dependency>    
   </dependencies>
 
   <build>
@@ -107,23 +121,6 @@
           </execution>
         </executions>
       </plugin>
-     <!--plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>shitty-maven-plugin</artifactId>
-        <version>1.0-alpha-2</version>
-        <executions>
-          <execution>
-            <goals>
-              <goal>clean</goal>
-              <goal>install</goal>
-              <goal>test</goal>
-            </goals>
-            <configuration>
-              <parallel>false</parallel>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin-->    
     </plugins>
   </build>
 </project>
diff --git a/enforcer-rules/src/it/requirePlugins1/goals.txt b/enforcer-rules/src/it/requirePlugins1/goals.txt
deleted file mode 100644
index d97e100..0000000
--- a/enforcer-rules/src/it/requirePlugins1/goals.txt
+++ /dev/null
@@ -1 +0,0 @@
-site
\ No newline at end of file
diff --git a/enforcer-rules/src/it/requirePlugins1/pom.xml b/enforcer-rules/src/it/requirePlugins1/pom.xml
deleted file mode 100644
index e6e6bac..0000000
--- a/enforcer-rules/src/it/requirePlugins1/pom.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
-  
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.maven.enforcer.its</groupId>
-  <artifactId>requirePlugins1</artifactId>
-  <packaging>jar</packaging>
-  <version>testing</version>
-    
-  
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-site-plugin</artifactId>
-          <version>2.0-beta-6</version>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-    <plugins>
-     <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0-SNAPSHOT</version>
-        <executions>
-          <execution>
-            <id>enforce</id>
-            <goals>
-              <goal>enforce</goal>
-            </goals>
-            <configuration>
-              <rules>
-                <requirePluginVersions><phases>site</phases></requirePluginVersions>
-              </rules>
-            </configuration>
-          <!--  <dependencies>
-              <dependency>
-                <groupId>org.apache.maven.enforcer</groupId>
-                <artifactId>enforcer-rules</artifactId>
-                <version>testing</version>
-              </dependency>
-            </dependencies>-->
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-    </build>
-    <reporting>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-checkstyle-plugin</artifactId>
-        </plugin>
-      </plugins>
-    </reporting>
- </project>
\ No newline at end of file
diff --git a/enforcer-rules/src/it/requirePlugins1/validate.groovy b/enforcer-rules/src/it/requirePlugins1/validate.groovy
deleted file mode 100644
index e69de29..0000000
diff --git a/enforcer-rules/src/it/requirePluginsReports/goals.txt b/enforcer-rules/src/it/requirePluginsReports/goals.txt
deleted file mode 100644
index d97e100..0000000
--- a/enforcer-rules/src/it/requirePluginsReports/goals.txt
+++ /dev/null
@@ -1 +0,0 @@
-site
\ No newline at end of file
diff --git a/enforcer-rules/src/it/requirePluginsReports/pom.xml b/enforcer-rules/src/it/requirePluginsReports/pom.xml
deleted file mode 100644
index 16abfec..0000000
--- a/enforcer-rules/src/it/requirePluginsReports/pom.xml
+++ /dev/null
@@ -1,413 +0,0 @@
-<?xml version="1.0"?>
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>net.sf.logdistiller</groupId>
-  <artifactId>logdistiller</artifactId>
-  <packaging>jar</packaging>
-
-  <name>LogDistiller</name>
-  <version>0.10-SNAPSHOT</version>
-  <description>
-    LogDistiller is a logfile merge and sort tool.
-    Log content is classified according to rules configured in an XML file.
-    Classification results go into reports, which are published:
-    simply stored in a file, sent by mail, or even added to a news feed.
-  </description>
-  <url>http://logdistiller.sf.net/</url>
-  <inceptionYear>2004</inceptionYear>
-  <developers>
-    <developer>
-      <id>hboutemy</id>
-      <name>Hervé Boutemy</name>
-      <email>hboutemy at users.sourceforge.net</email>
-      <timezone>+1</timezone>
-    </developer>
-  </developers>
-  <scm>
-    <connection>scm:cvs:pserver:anonymous at logdistiller.cvs.sourceforge.net:/cvsroot/logdistiller:logdistiller</connection>
-    <developerConnection>scm:cvs:ext:${maven.username}@logdistiller.cvs.sourceforge.net:/cvsroot/logdistiller:logdistiller</developerConnection>
-    <url>http://logdistiller.cvs.sourceforge.net/logdistiller/logdistiller</url>
-  </scm>
-  <licenses>
-    <license>
-      <name>GPL</name>
-      <url>http://www.gnu.org/licenses/gpl.html</url>
-      <distribution>repo</distribution>
-    </license>
-  </licenses>
-  <issueManagement>
-    <system>SF Bug Tracker</system>
-    <url>http://sourceforge.net/tracker/?atid=629552&group_id=101369</url>
-  </issueManagement>
-  <mailingLists>
-    <mailingList>
-      <name>LogDistiller Users</name>
-      <subscribe>https://lists.sourceforge.net/lists/listinfo/logdistiller-users</subscribe>
-      <unsubscribe>https://lists.sourceforge.net/lists/listinfo/logdistiller-users</unsubscribe>
-      <post>logdistiller-users at lists.sourceforge.net</post>
-      <archive>http://sourceforge.net/mailarchive/forum.php?forum_name=logdistiller-users</archive>
-    </mailingList>
-  </mailingLists>
-
-  <properties>
-    <project.build.sourceEncoding>ISO-8859-15</project.build.sourceEncoding>
-  </properties>
-
-  <build>
-    <sourceDirectory>src</sourceDirectory>
-    <testSourceDirectory>test</testSourceDirectory>
-    <resources>
-      <resource>
-        <directory>${basedir}/src/</directory>
-        <includes>
-          <include>net/sf/logdistiller/xml/*.dtd</include>
-          <include>net/sf/logdistiller/gui/*.xml</include>
-        </includes>
-      </resource>
-    </resources>
-    <testResources>
-      <testResource>
-        <directory>${basedir}/test/</directory>
-        <includes>
-          <include>logdistiller.properties</include>
-          <include>net/sf/logdistiller/*.ser</include>
-          <include>net/sf/logdistiller/logtypes/*.log</include>
-          <include>net/sf/logdistiller/logtypes/*.csv</include>
-          <include>net/sf/logdistiller/xml/*.xml</include>
-        </includes>
-      </testResource>
-    </testResources>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>2.0.2</version>
-        <configuration>
-          <source>1.4</source>
-          <target>1.4</target>
-          <encoding>${project.build.sourceEncoding}</encoding><!-- not needed for 2.1 -->
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.3</version>
-        <configuration>
-          <test>**/*TestCase</test>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>buildnumber-maven-plugin</artifactId>
-        <version>1.0-beta-1</version>
-        <configuration>
-          <format>{0,date,yyyy-MM-dd HH:mm:ss}</format>
-          <items>
-            <item>timestamp</item>
-          </items>
-        </configuration>
-        <executions>
-          <execution>
-            <phase>validate</phase>
-            <goals>
-              <goal>create</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <version>2.1</version>
-        <configuration>
-          <descriptors>
-            <descriptor>src/main/assembly/full.xml</descriptor>
-          </descriptors>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-        <version>2.1</version>
-        <configuration>
-          <archive>
-            <index>true</index>
-            <manifest>
-              <addClasspath>true</addClasspath>
-              <classpathPrefix>lib</classpathPrefix>
-              <mainClass>net.sf.logdistiller.gui.Main</mainClass>
-            </manifest>
-            <manifestEntries>
-              <Built-By>${maven.username}</Built-By>
-              <Specification-Title>${project.name}</Specification-Title>
-              <Specification-Version>${project.version}</Specification-Version>
-              <Specification-Vendor>Hervé BOUTEMY</Specification-Vendor>
-              <Implementation-Title>${project.groupId}</Implementation-Title>
-              <Implementation-Version>${project.version} ${buildNumber}</Implementation-Version>
-              <Implementation-Vendor>${project.url}</Implementation-Vendor>
-            </manifestEntries>
-          </archive>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>cobertura-maven-plugin</artifactId>
-        <version>2.2</version>
-        <executions>
-          <execution>
-            <goals>
-              <goal>clean</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-antrun-plugin</artifactId>
-        <version>1.1</version>
-        <executions>
-          <execution>
-            <id>ant-test</id>
-            <phase>test</phase>
-            <configuration>
-              <tasks>
-                <ant antfile="${basedir}/test/build.xml" inheritRefs="true">
-                  <target name="test.full"/>
-                </ant>
-              </tasks>
-            </configuration>
-            <goals>
-              <goal>run</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-clean-plugin</artifactId>
-        <version>2.2</version>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-resources-plugin</artifactId>
-        <version>2.2</version>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-install-plugin</artifactId>
-        <version>2.2</version>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-deploy-plugin</artifactId>
-        <version>2.3</version>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-site-plugin</artifactId>
-        <version>2.0-beta-7</version>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0-SNAPSHOT</version>
-        <executions>
-          <execution>
-            <id>enforce-versions</id>
-            <goals>
-              <goal>enforce</goal>
-            </goals>
-            <configuration>
-              <rules>
-                <requirePluginVersions>
-                  <unCheckedPlugins>
-                    <unCheckedPlugin>
-                      org.apache.maven.plugins:maven-enforcer-plugin
-                    </unCheckedPlugin>
-                  </unCheckedPlugins>
-                </requirePluginVersions>
-              </rules>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-
-  <dependencies>
-    <dependency>
-      <groupId>ant</groupId>
-      <artifactId>ant</artifactId>
-      <version>1.6.5</version>
-    </dependency>
-    <dependency>
-      <groupId>javax.mail</groupId>
-      <artifactId>mail</artifactId>
-      <version>1.4</version>
-    </dependency>
-    <dependency>
-      <groupId>com.jgoodies</groupId>
-      <artifactId>forms</artifactId>
-      <version>1.0.7</version>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>net.sf.formlayoutmaker</groupId>
-      <artifactId>formlayoutmakerx</artifactId>
-      <version>rc7</version>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-io</artifactId>
-      <version>1.3.2</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-      <version>2.3</version>
-    </dependency>
-    <dependency>
-      <groupId>rome</groupId>
-      <artifactId>rome</artifactId>
-      <version>0.8</version>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>jdom</groupId>
-      <artifactId>jdom</artifactId>
-      <version>1.0</version>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>3.8.1</version>
-      <optional>true</optional>
-    </dependency>
-  </dependencies>
-
-  <reporting>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-project-info-reports-plugin</artifactId>
-        <version>2.1-SNAPSHOT</version>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-        <version>2.3</version>
-        <configuration>
-          <encoding>${project.build.sourceEncoding}</encoding><!-- not needed in 2.5 -->
-          <overview>${basedir}/src/overview.html</overview>
-          <stylesheetfile>${basedir}/xdocs/style/stylesheet.css</stylesheetfile>
-          <linksource>true</linksource>
-          <links>
-            <link>http://java.sun.com/j2se/1.4.2/docs/api</link>
-            <link>http://www.junit.org/junit/javadoc/3.8.1</link>
-          </links>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-pmd-plugin</artifactId>
-        <version>2.2</version>
-        <configuration>
-          <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding><!-- not needed in 2.4 -->
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-report-plugin</artifactId>
-        <version>2.3</version>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>cobertura-maven-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jxr-plugin</artifactId>
-        <version>2.1</version>
-        <configuration>
-          <inputEncoding>${project.build.sourceEncoding}</inputEncoding><!-- not needed in 2.2 -->
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>jdepend-maven-plugin</artifactId>
-        <version>2.0-beta-1</version>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>findbugs-maven-plugin</artifactId>
-        <version>1.1.1</version>
-        <configuration>
-          <excludeFilterFile>test/findBugsExcludeFilter.xml</excludeFilterFile>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>javancss-maven-plugin</artifactId>
-        <version>2.0-beta-2</version>
-      </plugin>
-      <plugin>
-        <groupId>net.sf.dtddoc</groupId>
-        <artifactId>dtddoc-maven-plugin</artifactId>
-        <version>1.1</version>
-        <configuration>
-          <sourceDirectory>${basedir}/src/net/sf/logdistiller/xml</sourceDirectory>
-          <docTitle>LogDistiller's DTD</docTitle>
-          <styleSheet>${basedir}/xdocs/style/DTDDocStyle.css</styleSheet>
-          <includes>
-            <include>logdistiller-1_3.dtd</include>
-          </includes>
-        </configuration>
-      </plugin>
-    </plugins>
-  </reporting>
-
-  <profiles>
-    <profile>
-      <id>full</id>
-      <reporting>
-        <plugins>
-          <plugin>
-            <groupId>statcvs</groupId>
-            <artifactId>maven-statcvs-plugin</artifactId>
-            <version>3.1-SNAPSHOT</version>
-            <configuration>
-              <history>true</history>
-              <fork>true</fork>
-              <webUrlType>viewcvs</webUrlType>
-              <excludes>
-                <exclude>docs/*</exclude>
-                <exclude>sample/logs/**/*</exclude>
-                <exclude>**/tmp/*</exclude>
-              </excludes>
-            </configuration>
-          </plugin>
-        </plugins>
-      </reporting>
-    </profile>
-  </profiles>
-
-  <distributionManagement>
-    <site>
-      <id>sourceforge</id>
-      <url>scp://logdistiller.sourceforge.net/home/groups/l/lo/logdistiller/htdocs</url>
-    </site>
-    <repository>
-      <id>sourceforge</id>
-      <url>scp://dtddoc.sourceforge.net/home/groups/l/lo/logdistiller/htdocs/m2repo/releases</url>
-    </repository>
-    <snapshotRepository>
-      <id>sourceforge</id>
-      <url>scp://dtddoc.sourceforge.net/home/groups/l/lo/logdistiller/htdocs/m2repo/snapshots</url>
-    </snapshotRepository>
-  </distributionManagement>
-</project>
diff --git a/enforcer-rules/src/it/requirePluginsReports/validate.groovy b/enforcer-rules/src/it/requirePluginsReports/validate.groovy
deleted file mode 100644
index e69de29..0000000
diff --git a/enforcer-rules/src/it/requirePluginsUnchecked/goals.txt b/enforcer-rules/src/it/requirePluginsUnchecked/goals.txt
deleted file mode 100644
index d97e100..0000000
--- a/enforcer-rules/src/it/requirePluginsUnchecked/goals.txt
+++ /dev/null
@@ -1 +0,0 @@
-site
\ No newline at end of file
diff --git a/enforcer-rules/src/it/requirePluginsUnchecked/pom.xml b/enforcer-rules/src/it/requirePluginsUnchecked/pom.xml
deleted file mode 100644
index 0d20c16..0000000
--- a/enforcer-rules/src/it/requirePluginsUnchecked/pom.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><project>
-  
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.maven.enforcer.its</groupId>
-  <artifactId>requirePluginsUnchecked</artifactId>
-  <packaging>jar</packaging>
-  <version>testing</version>
-    
-  
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-site-plugin</artifactId>
-          
-        </plugin>
-      </plugins>
-    </pluginManagement>
-    <plugins>
-     <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0-beta-1-SNAPSHOT</version>
-        <executions>
-          <execution>
-            <goals>
-              <goal>enforce</goal>
-            </goals>
-            <configuration>
-              <rules>
-                <requirePluginVersions>
-                  <phases>site</phases>
-                  <unCheckedPlugins>
-                    <unCheckedPlugin>org.apache.maven.plugins:maven-site-plugin</unCheckedPlugin>
-                  </unCheckedPlugins>
-                 <unCheckedPluginList>org.apache.maven.plugins : maven-enforcer-plugin</unCheckedPluginList>
-                </requirePluginVersions>
-              </rules>
-            </configuration>
-          <!--  <dependencies>
-              <dependency>
-                <groupId>org.apache.maven.enforcer</groupId>
-                <artifactId>enforcer-rules</artifactId>
-                <version>testing</version>
-              </dependency>
-            </dependencies>-->
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-    </build>
-    <reporting>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-checkstyle-plugin</artifactId>
-        </plugin>
-      </plugins>
-    </reporting>
- </project>
\ No newline at end of file
diff --git a/enforcer-rules/src/it/requirePluginsUnchecked/validate.groovy b/enforcer-rules/src/it/requirePluginsUnchecked/validate.groovy
deleted file mode 100644
index e69de29..0000000
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
index e776ceb..c24a936 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.util.Iterator;
 import java.util.Set;
@@ -28,23 +29,22 @@ import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 
-// TODO: Auto-generated Javadoc
 /**
  * Abstract Rule for banning dependencies.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
- * @version $Id: AbstractBanDependencies.java 675992 2008-07-11 15:42:48Z hboutemy $
+ * @version $Id: AbstractBanDependencies.java 885125 2009-11-28 18:51:23Z brianf $
  */
 public abstract class AbstractBanDependencies
     extends AbstractNonCacheableEnforcerRule
 {
 
     /** Specify if transitive dependencies should be searched (default) or only look at direct dependencies. */
-    public boolean searchTransitive = true;
+    private boolean searchTransitive = true;
 
     /**
      * Execute the rule.
-     * 
+     *
      * @param helper the helper
      * @throws EnforcerRuleException the enforcer rule exception
      */
@@ -64,15 +64,7 @@ public abstract class AbstractBanDependencies
         }
 
         // get the correct list of dependencies
-        Set dependencies = null;
-        if ( searchTransitive )
-        {
-            dependencies = project.getArtifacts();
-        }
-        else
-        {
-            dependencies = project.getDependencyArtifacts();
-        }
+        Set dependencies = getDependenciesToCheck( project );
 
         // look for banned dependencies
         Set foundExcludes = checkDependencies( dependencies, helper.getLog() );
@@ -88,18 +80,38 @@ public abstract class AbstractBanDependencies
             Iterator iter = foundExcludes.iterator();
             while ( iter.hasNext() )
             {
-                buf.append( "Found Banned Dependency: " + ( (Artifact) iter.next() ).getId() + "\n" );
+                Artifact artifact = (Artifact) iter.next();
+                buf.append( getErrorMessage( artifact ) );
             }
-            message = buf.toString();
+            message = buf.toString()+ "Use 'mvn dependency:tree' to locate the source of the banned dependencies.";
 
             throw new EnforcerRuleException( message );
         }
 
     }
 
+    protected CharSequence getErrorMessage( Artifact artifact )
+    {
+        return "Found Banned Dependency: " + artifact.getId() + "\n";
+    }
+
+    protected Set getDependenciesToCheck( MavenProject project )
+    {
+        Set dependencies = null;
+        if ( searchTransitive )
+        {
+            dependencies = project.getArtifacts();
+        }
+        else
+        {
+            dependencies = project.getDependencyArtifacts();
+        }
+        return dependencies;
+    }
+
     /**
      * Checks the set of dependencies against the list of excludes.
-     * 
+     *
      * @param dependencies the dependencies
      * @param log the log
      * @return the sets the
@@ -110,7 +122,7 @@ public abstract class AbstractBanDependencies
 
     /**
      * Gets the message.
-     * 
+     *
      * @return the message
      */
     public String getMessage()
@@ -120,7 +132,7 @@ public abstract class AbstractBanDependencies
 
     /**
      * Sets the message.
-     * 
+     *
      * @param theMessage the message to set
      */
     public void setMessage( String theMessage )
@@ -130,7 +142,7 @@ public abstract class AbstractBanDependencies
 
     /**
      * Checks if is search transitive.
-     * 
+     *
      * @return the searchTransitive
      */
     public boolean isSearchTransitive()
@@ -140,7 +152,7 @@ public abstract class AbstractBanDependencies
 
     /**
      * Sets the search transitive.
-     * 
+     *
      * @param theSearchTransitive the searchTransitive to set
      */
     public void setSearchTransitive( boolean theSearchTransitive )
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractNonCacheableEnforcerRule.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractNonCacheableEnforcerRule.java
index 0f372c6..9ad3039 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractNonCacheableEnforcerRule.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractNonCacheableEnforcerRule.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,24 +18,23 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import org.apache.maven.enforcer.rule.api.EnforcerRule;
 
 /**
  * The Class AbstractNonCacheableEnforcerRule. This is to be used by rules
- * that don't need caching...it saves implementing a bunch of methods.
- * 
+ * that don't need caching... it saves implementing a bunch of methods.
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
- * @version $Id: $
+ * @version $Id: AbstractNonCacheableEnforcerRule.java 805190 2009-08-17 22:30:49Z hboutemy $
  */
-abstract public class AbstractNonCacheableEnforcerRule
+public abstract class AbstractNonCacheableEnforcerRule
     extends AbstractStandardEnforcerRule
 {
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#getCacheId()
      */
     public String getCacheId()
@@ -43,7 +44,7 @@ abstract public class AbstractNonCacheableEnforcerRule
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#isCacheable()
      */
     public boolean isCacheable()
@@ -53,7 +54,7 @@ abstract public class AbstractNonCacheableEnforcerRule
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#isResultValid(org.apache.maven.enforcer.rule.api.EnforcerRule)
      */
     public boolean isResultValid( EnforcerRule cachedRule )
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractRequireFiles.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractRequireFiles.java
index c6102da..8ed709b 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractRequireFiles.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractRequireFiles.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -26,59 +27,58 @@ import org.apache.maven.enforcer.rule.api.EnforcerRule;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 
-// TODO: Auto-generated Javadoc
 /**
  * Contains the common code to compare an array of files against a requirement.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
-abstract public class AbstractRequireFiles
+public abstract class AbstractRequireFiles
     extends AbstractStandardEnforcerRule
 {
 
     /** Array of files to check. */
     File[] files;
-    
-    //if null file handles should be allowed. If they are allowed, it means treat it as a success.
+
+    /** if null file handles should be allowed. If they are allowed, it means treat it as a success. */
     boolean allowNulls = false;
 
     // check the file for the specific condition
     /**
      * Check one file.
-     * 
+     *
      * @param file the file
      * @return <code>true</code> if successful
      */
     abstract boolean checkFile( File file );
 
-    // retun standard error message
+    // return standard error message
     /**
      * Gets the error msg.
-     * 
+     *
      * @return the error msg
      */
     abstract String getErrorMsg();
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#execute(org.apache.maven.enforcer.rule.api.EnforcerRuleHelper)
      */
     public void execute( EnforcerRuleHelper helper )
         throws EnforcerRuleException
     {
-    	
-    	if (!allowNulls && files.length == 0)
+
+        if ( !allowNulls && files.length == 0 )
     	{
-    		throw new EnforcerRuleException("The file list is empty and Null files are disabled.");
+            throw new EnforcerRuleException( "The file list is empty and Null files are disabled." );
     	}
 
         ArrayList failures = new ArrayList();
         for ( int i = 0; i < files.length; i++ )
         {
-        	if (!allowNulls && files[i] == null)
+            if ( !allowNulls && files[i] == null )
         	{
-        		failures.add(files[i]);
+                failures.add( files[i] );
         	}
         	else if ( !checkFile( files[i] ) )
             {
@@ -119,7 +119,7 @@ abstract public class AbstractRequireFiles
      * result to be different. Multiple cached results are stored based on their id. The easiest way to do this is to
      * return a hash computed from the values of your parameters. If your rule is not cacheable, then the result here is
      * not important, you may return anything.
-     * 
+     *
      * @return the cache id
      */
     public String getCacheId()
@@ -130,7 +130,7 @@ abstract public class AbstractRequireFiles
     /**
      * Calculates a hash code for the specified array as <code>Arrays.hashCode()</code> would do. Unfortunately, the
      * mentioned method is only available for Java 1.5 and later.
-     * 
+     *
      * @param items The array for which to compute the hash code, may be <code>null</code>.
      * @return The hash code for the array.
      */
@@ -153,7 +153,7 @@ abstract public class AbstractRequireFiles
      * This tells the system if the results are cacheable at all. Keep in mind that during forked builds and other
      * things, a given rule may be executed more than once for the same project. This means that even things that change
      * from project to project may still be cacheable in certain instances.
-     * 
+     *
      * @return <code>true</code> if rule is cacheable
      */
     public boolean isCacheable()
@@ -166,7 +166,7 @@ abstract public class AbstractRequireFiles
      * allow double checking of the results. Most of the time this can be done by generating unique ids, but sometimes
      * the results of objects returned by the helper need to be queried. You may for example, store certain objects in
      * your rule and then query them later.
-     * 
+     *
      * @param cachedRule the cached rule
      * @return <code>true</code> if the stored results are valid for the same id.
      */
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractStandardEnforcerRule.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractStandardEnforcerRule.java
index 9edf16c..5594174 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractStandardEnforcerRule.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractStandardEnforcerRule.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,11 +18,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import org.apache.maven.enforcer.rule.api.EnforcerRule;
 
-// TODO: Auto-generated Javadoc
 /**
  * The Class AbstractStandardEnforcerRule.
  */
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java
index dccf109..0ce0e49 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.util.Iterator;
 
@@ -30,12 +31,11 @@ import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.logging.Log;
 import org.codehaus.plexus.util.StringUtils;
 
-// TODO: Auto-generated Javadoc
 /**
  * Contains the common code to compare a version against a version range.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
- * @version $Id: AbstractVersionEnforcer.java 675992 2008-07-11 15:42:48Z hboutemy $
+ * @version $Id: AbstractVersionEnforcer.java 805190 2009-08-17 22:30:49Z hboutemy $
  */
 public abstract class AbstractVersionEnforcer
     extends AbstractStandardEnforcerRule
@@ -55,7 +55,7 @@ public abstract class AbstractVersionEnforcer
 
     /**
      * Compares the specified version to see if it is allowed by the defined version range.
-     * 
+     *
      * @param log the log
      * @param variableName name of variable to use in messages (Example: "Maven" or "Java" etc).
      * @param requiredVersionRange range of allowed versions.
@@ -114,7 +114,7 @@ public abstract class AbstractVersionEnforcer
      * Copied from Artifact.VersionRange. This is tweaked to handle singular ranges properly. Currently the default
      * containsVersion method assumes a singular version means allow everything. This method assumes that "2.0.4" ==
      * "[2.0.4,)"
-     * 
+     *
      * @param allowedRange range of allowed versions.
      * @param theVersion the version to be checked.
      * @return true if the version is contained by the range.
@@ -146,7 +146,7 @@ public abstract class AbstractVersionEnforcer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#getCacheId()
      */
     public String getCacheId()
@@ -165,7 +165,7 @@ public abstract class AbstractVersionEnforcer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#isCacheable()
      */
     public boolean isCacheable()
@@ -176,7 +176,7 @@ public abstract class AbstractVersionEnforcer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#isResultValid(org.apache.maven.enforcer.rule.api.EnforcerRule)
      */
     public boolean isResultValid( EnforcerRule theCachedRule )
@@ -188,7 +188,7 @@ public abstract class AbstractVersionEnforcer
 
     /**
      * Gets the required version.
-     * 
+     *
      * @return the required version
      */
     public String getVersion()
@@ -198,7 +198,7 @@ public abstract class AbstractVersionEnforcer
 
     /**
      * Sets the required version.
-     * 
+     *
      * @param theVersion the required version to set
      */
     public void setVersion( String theVersion )
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AlwaysFail.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AlwaysFail.java
index 827222c..271dd0c 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AlwaysFail.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AlwaysFail.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
@@ -36,6 +37,12 @@ public class AlwaysFail
     public void execute( EnforcerRuleHelper helper )
         throws EnforcerRuleException
     {
-        throw new EnforcerRuleException( "Always fails!" );
+        StringBuffer buf = new StringBuffer();
+        if ( message != null )
+        {
+            buf.append( message + "\n" );
+        }
+        buf.append( "Always fails!" );
+        throw new EnforcerRuleException( buf.toString() );
     }
 }
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AlwaysPass.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AlwaysPass.java
index c9d1496..13a374a 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AlwaysPass.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AlwaysPass.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
@@ -37,7 +38,13 @@ public class AlwaysPass
         throws EnforcerRuleException
     {
         final Log log = helper.getLog();
-        log.info( "Always pass!" );
+        StringBuffer buf = new StringBuffer();
+        if ( message != null )
+        {
+            buf.append( message + "\n" );
+        }
+        buf.append( "Always pass!" );
+        log.info( buf.toString() );
     }
 
 }
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedDependencies.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedDependencies.java
index f913d21..02fc751 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedDependencies.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedDependencies.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.util.HashSet;
 import java.util.Iterator;
@@ -31,12 +32,11 @@ import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.plugin.logging.Log;
 import org.codehaus.plexus.util.StringUtils;
 
-// TODO: Auto-generated Javadoc
 /**
  * This rule checks that lists of dependencies are not included.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
- * @version $Id: BannedDependencies.java 675992 2008-07-11 15:42:48Z hboutemy $
+ * @version $Id: BannedDependencies.java 1028164 2010-10-28 01:40:06Z brianf $
  */
 public class BannedDependencies
     extends AbstractBanDependencies
@@ -60,7 +60,7 @@ public class BannedDependencies
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.plugin.enforcer.AbstractBanDependencies#checkDependencies(java.util.Set)
      */
     protected Set checkDependencies( Set theDependencies, Log log )
@@ -84,7 +84,7 @@ public class BannedDependencies
 
     /**
      * Checks the set of dependencies against the list of patterns.
-     * 
+     *
      * @param thePatterns the patterns
      * @param dependencies the dependencies
      * @return a set containing artifacts matching one of the patterns or <code>null</code>
@@ -128,7 +128,8 @@ public class BannedDependencies
 
     /**
      * Compares the parsed array of substrings against the artifact.
-     * 
+     * The pattern should follow the format "groupId:artifactId:version:type:scope"
+     *
      * @param pattern the array of patterns
      * @param artifact the artifact
      * @return <code>true</code> if the artifact matches one of the patterns
@@ -162,7 +163,7 @@ public class BannedDependencies
                 {
                     result =
                         AbstractVersionEnforcer.containsVersion( VersionRange.createFromVersionSpec( pattern[2] ),
-                                                                 new DefaultArtifactVersion( artifact.getVersion() ) );
+                                                                 new DefaultArtifactVersion( artifact.getBaseVersion() ) );
                 }
                 catch ( InvalidVersionSpecificationException e )
                 {
@@ -171,12 +172,32 @@ public class BannedDependencies
             }
         }
 
+        if ( result && pattern.length > 3 )
+        {
+            String type = artifact.getType();
+            if ( type == null || type.equals( "" ) )
+            {
+                type = "jar";
+            }
+            result = pattern[3].equals( "*" ) || type.equals( pattern[3] );
+        }
+
+        if ( result && pattern.length > 4 )
+        {
+            String scope = artifact.getScope();
+            if ( scope == null || scope.equals( "" ) )
+            {
+                scope = "compile";
+            }
+            result = pattern[4].equals( "*" ) || scope.equals( pattern[4] );
+        }
+
         return result;
     }
 
     /**
      * Gets the excludes.
-     * 
+     *
      * @return the excludes
      */
     public List getExcludes()
@@ -186,7 +207,7 @@ public class BannedDependencies
 
     /**
      * Sets the excludes.
-     * 
+     *
      * @param theExcludes the excludes to set
      */
     public void setExcludes( List theExcludes )
@@ -196,7 +217,7 @@ public class BannedDependencies
 
     /**
      * Gets the includes.
-     * 
+     *
      * @return the includes
      */
     public List getIncludes()
@@ -206,7 +227,7 @@ public class BannedDependencies
 
     /**
      * Sets the includes.
-     * 
+     *
      * @param theIncludes the includes to set
      */
     public void setIncludes( List theIncludes )
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAlwaysFail.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedPlugins.java
similarity index 59%
copy from enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAlwaysFail.java
copy to enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedPlugins.java
index 1f36fc9..18262b1 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAlwaysFail.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedPlugins.java
@@ -1,48 +1,46 @@
-/*
- * 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.
- */
-package org.apache.maven.plugins.enforcer;
-
-import junit.framework.TestCase;
-
-import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
-
-/**
- * Test AlwaysFail rule.
- * @author Ben Lidgey
- * @see AlwaysFail
- */
-public class TestAlwaysFail extends TestCase
-{
-
-    public void testExecute()
-    {
-        final AlwaysFail rule = new AlwaysFail();
-        try
-        {
-            // execute rule -- should throw EnforcerRuleException
-            rule.execute( EnforcerTestUtils.getHelper() );
-            fail( "Should throw EnforcerRuleException" );
-        }
-        catch ( EnforcerRuleException e )
-        {
-            assertTrue( true );
-        }
-    }
-
-}
+package org.apache.maven.plugins.enforcer;
+
+/*
+ * 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.
+ */
+
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.project.MavenProject;
+
+/**
+ * This rule checks that lists of plugins are not included.
+ *
+ * @author <a href="mailto:velo.br at gmail.com">Marvin Froeder</a>
+ */
+public class BannedPlugins
+    extends BannedDependencies
+{
+
+    protected Set getDependenciesToCheck( MavenProject project )
+    {
+        return project.getPluginArtifacts();
+    }
+
+    protected CharSequence getErrorMessage( Artifact artifact )
+    {
+        return "Found Banned Plugin: " + artifact.getId() + "\n";
+    }
+
+}
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DefaultEnforcementRuleHelper.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DefaultEnforcementRuleHelper.java
index c26c3c4..07cbdbc 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DefaultEnforcementRuleHelper.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DefaultEnforcementRuleHelper.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.io.File;
 import java.util.List;
@@ -30,13 +31,12 @@ import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluatio
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
-// TODO: Auto-generated Javadoc
 /**
  * Default implementation of the EnforcementRuleHelper interface. This is used to help retrieve information from the
  * session and provide useful elements like the log.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
- * @version $Id: DefaultEnforcementRuleHelper.java 675992 2008-07-11 15:42:48Z hboutemy $
+ * @version $Id: DefaultEnforcementRuleHelper.java 805190 2009-08-17 22:30:49Z hboutemy $
  */
 public class DefaultEnforcementRuleHelper
     implements EnforcerRuleHelper
@@ -56,7 +56,7 @@ public class DefaultEnforcementRuleHelper
 
     /**
      * Instantiates a new default enforcement rule helper.
-     * 
+     *
      * @param session the session
      * @param evaluator the evaluator
      * @param log the log
@@ -80,7 +80,7 @@ public class DefaultEnforcementRuleHelper
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRuleHelper#getLog()
      */
     public Log getLog()
@@ -90,7 +90,7 @@ public class DefaultEnforcementRuleHelper
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator#alignToBaseDirectory(java.io.File)
      */
     public File alignToBaseDirectory( File theFile )
@@ -100,7 +100,7 @@ public class DefaultEnforcementRuleHelper
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator#evaluate(java.lang.String)
      */
     public Object evaluate( String theExpression )
@@ -111,7 +111,7 @@ public class DefaultEnforcementRuleHelper
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.shared.enforcer.rule.api.EnforcerRuleHelper#getRuntimeInformation()
      */
     public Object getComponent( Class clazz )
@@ -122,7 +122,7 @@ public class DefaultEnforcementRuleHelper
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRuleHelper#lookup(java.lang.String)
      */
     public Object getComponent( String theComponentKey )
@@ -133,7 +133,7 @@ public class DefaultEnforcementRuleHelper
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRuleHelper#lookup(java.lang.String, java.lang.String)
      */
     public Object getComponent( String theRole, String theRoleHint )
@@ -144,7 +144,7 @@ public class DefaultEnforcementRuleHelper
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRuleHelper#lookupList(java.lang.String)
      */
     public List getComponentList( String theRole )
@@ -155,7 +155,7 @@ public class DefaultEnforcementRuleHelper
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRuleHelper#lookupMap(java.lang.String)
      */
     public Map getComponentMap( String theRole )
@@ -166,7 +166,7 @@ public class DefaultEnforcementRuleHelper
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRuleHelper#getContainer()
      */
     public PlexusContainer getContainer()
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
new file mode 100644
index 0000000..fdaae0a
--- /dev/null
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
@@ -0,0 +1,190 @@
+package org.apache.maven.plugins.enforcer;
+/*
+ * 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.
+ */
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactCollector;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.enforcer.rule.api.EnforcerRule;
+import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
+import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.enforcer.utils.DependencyVersionMap;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.dependency.tree.DependencyNode;
+import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
+import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
+import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.codehaus.plexus.i18n.I18N;
+
+/**
+ * @author <a href="mailto:rex at e-hoffman.org">Rex Hoffman</a>
+ */
+public class DependencyConvergence implements EnforcerRule {
+
+  private static Log log;
+
+  private static I18N i18n;
+  
+  /**
+   * Uses the {@link EnforcerRuleHelper} to populate the values of the {@link DependencyTreeBuilder#buildDependencyTree(MavenProject, ArtifactRepository, ArtifactFactory, ArtifactMetadataSource, ArtifactFilter, ArtifactCollector)}
+   * factory method. <br/>
+   * 
+   * This method simply exists to hide all the ugly lookup that the {@link EnforcerRuleHelper} has to do.
+   * 
+   * @param helper
+   * @return a Dependency Node which is the root of the project's dependency tree
+   * @throws EnforcerRuleException
+   */
+  private DependencyNode getNode(EnforcerRuleHelper helper) throws EnforcerRuleException {
+    try {
+      MavenProject           project        = (MavenProject) helper.evaluate("${project}");
+      DependencyTreeBuilder  dependencyTreeBuilder = (DependencyTreeBuilder) helper.getComponent(DependencyTreeBuilder.class);
+      ArtifactRepository     repository     = (ArtifactRepository)helper.evaluate("${localRepository}");
+      ArtifactFactory        factory        = (ArtifactFactory)helper.getComponent(ArtifactFactory.class);
+      ArtifactMetadataSource metadataSource = (ArtifactMetadataSource)helper.getComponent(ArtifactMetadataSource.class);
+      ArtifactCollector      collector      = (ArtifactCollector)helper.getComponent(ArtifactCollector.class);
+      ArtifactFilter         filter         = null; //we need to evaluate all scopes
+      DependencyNode         node           = dependencyTreeBuilder.buildDependencyTree(project, repository, factory, metadataSource, filter, collector);
+      return node;
+    } catch (ExpressionEvaluationException e) {
+      throw new EnforcerRuleException("Unable to lookup an expression " + e.getLocalizedMessage(), e);
+    } catch (ComponentLookupException e){
+      throw new EnforcerRuleException("Unable to lookup a component " + e.getLocalizedMessage(), e);
+    } catch (DependencyTreeBuilderException e){
+      throw new EnforcerRuleException("Could not build dependency tree " + e.getLocalizedMessage(), e);
+    }
+  }
+  
+  public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
+    if (log == null){
+      log = helper.getLog();
+    } 
+    try {
+      if (i18n == null){
+        i18n = (I18N) helper.getComponent(I18N.class);
+      }
+      DependencyNode node = getNode(helper);
+      MavenProject project = (MavenProject) helper.evaluate("${project}");
+      DependencyVersionMap visitor = new DependencyVersionMap(project.getArtifact().isRelease(), log);
+      node.accept(visitor);
+      List<CharSequence> errorMsgs = new ArrayList<CharSequence>();
+      errorMsgs.addAll(getConvergenceErrorMsgs(visitor.getConflictedVersionNumbers()));
+      for (CharSequence errorMsg : errorMsgs) {
+        log.error(errorMsg);
+      }
+      if (errorMsgs.size() > 0) {
+        throw new EnforcerRuleException("Failed while enforcing releasability the error(s) are " + errorMsgs);
+      }
+    } catch (ExpressionEvaluationException e) {
+      throw new EnforcerRuleException("Unable to lookup an expression " + e.getLocalizedMessage(), e);
+    } catch (ComponentLookupException e){
+      throw new EnforcerRuleException("Unable to lookup a component " + e.getLocalizedMessage(), e);
+    } catch (Exception e){
+      throw new EnforcerRuleException(e.getLocalizedMessage(), e);
+    }
+  }
+
+  private String getFullArtifactName(Artifact artifact){
+    return artifact.getGroupId() + ":" + artifact.getArtifactId() +":"+ artifact.getVersion();
+  }
+  
+  private StringBuilder buildTreeString(DependencyNode node) {
+    List<String> loc = new ArrayList<String>();
+    DependencyNode currentNode = node;
+    while (currentNode != null) {
+      loc.add(getFullArtifactName(currentNode.getArtifact()));
+      currentNode = currentNode.getParent();
+    }
+    Collections.reverse(loc);
+    StringBuilder builder = new StringBuilder();
+    for (int i = 0; i < loc.size(); i++) {
+      for (int j = 0; j < i; j++){
+        builder.append("  ");
+      }
+      builder.append("+-"+loc.get(i));
+      builder.append("\n");
+    }
+    return builder;
+  }
+
+  private List<String> getConvergenceErrorMsgs(List<List<DependencyNode>> errors) {
+    List<String> errorMsgs = new ArrayList<String>();
+    for (List<DependencyNode> nodeList : errors){
+      errorMsgs.add(buildConvergenceErrorMsg(nodeList));
+    }
+    return errorMsgs;
+  }
+
+  private String buildConvergenceErrorMsg(List<DependencyNode> nodeList){
+    StringBuilder builder = new StringBuilder();
+    builder.append("\nDependency convergence error for "+getFullArtifactName(nodeList.get(0).getArtifact())+" paths to dependency are:\n");
+    if (nodeList.size() > 0){
+      builder.append(buildTreeString(nodeList.get(0)));
+    }
+    for (DependencyNode node: nodeList.subList(1,nodeList.size())){
+      builder.append("and\n");
+      builder.append(buildTreeString(node));
+    }
+    return builder.toString();
+  }
+  
+  /**
+   * If your rule is cacheable, you must return a unique id when parameters or
+   * conditions change that would cause the result to be different. Multiple
+   * cached results are stored based on their id.
+   * 
+   * The easiest way to do this is to return a hash computed from the values of
+   * your parameters.
+   * 
+   * If your rule is not cacheable, then the result here is not important, you
+   * may return anything.
+   */
+  public String getCacheId() {
+    return "";
+  }
+
+  /**
+   * This tells the system if the results are cacheable at all. Keep in mind
+   * that during forked builds and other things, a given rule may be executed
+   * more than once for the same project. This means that even things that
+   * change from project to project may still be cacheable in certain instances.
+   */
+  public boolean isCacheable() {
+    return false;
+  }
+
+  /**
+   * If the rule is cacheable and the same id is found in the cache, the stored
+   * results are passed to this method to allow double checking of the results.
+   * Most of the time this can be done by generating unique ids, but sometimes
+   * the results of objects returned by the helper need to be queried. You may
+   * for example, store certain objects in your rule and then query them later.
+   */
+  public boolean isResultValid(EnforcerRule arg0) {
+    return false;
+  }
+}
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EnforcerExpressionEvaluator.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EnforcerExpressionEvaluator.java
index 5225d49..1565a7c 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EnforcerExpressionEvaluator.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EnforcerExpressionEvaluator.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.MojoExecution;
@@ -25,11 +26,10 @@ import org.apache.maven.plugin.descriptor.MojoDescriptor;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.path.PathTranslator;
 
-// TODO: Auto-generated Javadoc
 /**
  * The Class EnforcerExpressionEvaluator. This class wraps the PluginParameterExpressionEvaluator
  * because it can't be accessed directly in 2.0.x so we must create a new one.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class EnforcerExpressionEvaluator
@@ -38,7 +38,7 @@ public class EnforcerExpressionEvaluator
 
     /**
      * The Constructor.
-     * 
+     *
      * @param theContext the the context
      * @param thePathTranslator the the path translator
      * @param theProject the the project
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EvaluateBeanshell.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EvaluateBeanshell.java
index 54173bb..412afde 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EvaluateBeanshell.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EvaluateBeanshell.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
@@ -29,7 +30,7 @@ import bsh.Interpreter;
 
 /**
  * Rule for Maven Enforcer using Beanshell to evaluate a conditional expression.
- * 
+ *
  * @author hugonnem
  */
 public class EvaluateBeanshell
@@ -44,7 +45,7 @@ public class EvaluateBeanshell
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#execute(org.apache.maven.enforcer.rule.api.EnforcerRuleHelper)
      */
     public void execute( EnforcerRuleHelper helper )
@@ -75,7 +76,7 @@ public class EvaluateBeanshell
 
     /**
      * Evaluate expression using Beanshell.
-     * 
+     *
      * @param script the expression to be evaluated
      * @param log the logger
      * @return boolean the evaluation of the expression
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/NoSnapshots.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/NoSnapshots.java
index 17530bc..bafe13d 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/NoSnapshots.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/NoSnapshots.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,20 +18,18 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.util.Set;
 
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.plugin.logging.Log;
 
-// TODO: Auto-generated Javadoc
 /**
  * This rule is deprecated. Use requireReleaseVersions.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
- * @version $Id: NoSnapshots.java 675992 2008-07-11 15:42:48Z hboutemy $
- * @deprecated replaced by {@link #RequireReleaseDeps}
+ * @version $Id: NoSnapshots.java 987781 2010-08-21 16:23:40Z dennisl $
+ * @deprecated replaced by {@link RequireReleaseDeps}
  */
 public class NoSnapshots
     extends AbstractBanDependencies
@@ -37,7 +37,7 @@ public class NoSnapshots
 
     /**
      * Checks the set of dependencies to see if any snapshots are included.
-     * 
+     *
      * @param dependencies the dependencies
      * @param log the log
      * @return the sets the
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java
index 7747161..70614f3 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -29,10 +30,9 @@ import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 import org.codehaus.plexus.util.StringUtils;
 
-// TODO: Auto-generated Javadoc
 /**
  * This rule checks that some profiles are active.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class RequireActiveProfile
@@ -47,7 +47,7 @@ public class RequireActiveProfile
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#execute(org.apache.maven.enforcer.rule.api.EnforcerRuleHelper)
      */
     public void execute( EnforcerRuleHelper theHelper )
@@ -114,7 +114,7 @@ public class RequireActiveProfile
 
     /**
      * Checks if profile is active.
-     * 
+     *
      * @param project the project
      * @param profileName the profile name
      * @return <code>true</code> if profile is active
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFilesDontExist.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFilesDontExist.java
index 60b826a..1dcb584 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFilesDontExist.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFilesDontExist.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,11 +18,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.io.File;
 
-// TODO: Auto-generated Javadoc
 /**
  * The Class RequireFilesDontExist.
  */
@@ -30,18 +30,18 @@ public class RequireFilesDontExist
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.plugins.enforcer.AbstractRequireFiles#checkFile(java.io.File)
      */
     boolean checkFile( File file )
     {
     	//if we get here and the handle is null, treat it as a success
-    	return file == null ? true : !file.exists();
+        return file == null ? true : !file.exists();
     }
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.plugins.enforcer.AbstractRequireFiles#getErrorMsg()
      */
     String getErrorMsg()
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFilesSize.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFilesSize.java
index bb6b73d..996a425 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFilesSize.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireFilesSize.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.io.File;
 
@@ -29,7 +30,7 @@ import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluatio
 
 /**
  * Rule to validate the main artifact is within certain size constraints.
- * 
+ *
  * @author brianf
  * @author Roman Stumm
  */
@@ -51,14 +52,14 @@ public class RequireFilesSize
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#execute(org.apache.maven.enforcer.rule.api.EnforcerRuleHelper)
      */
     public void execute( EnforcerRuleHelper helper )
         throws EnforcerRuleException
     {
         this.log = helper.getLog();
-        
+
         // if the file is already defined, use that. Otherwise get the main artifact.
         if ( files.length == 0 )
         {
@@ -84,7 +85,7 @@ public class RequireFilesSize
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#isCacheable()
      */
     public boolean isCacheable()
@@ -94,7 +95,7 @@ public class RequireFilesSize
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#isResultValid(org.apache.maven.enforcer.rule.api.EnforcerRule)
      */
     public boolean isResultValid( EnforcerRule cachedRule )
@@ -112,7 +113,7 @@ public class RequireFilesSize
             //if we get here and it's null, treat it as a success.
             return true;
         }
-        
+
         // check the file now
         if ( file.exists() )
         {
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java
index f92b570..1e1065b 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.util.Arrays;
 import java.util.Iterator;
@@ -30,12 +31,11 @@ import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.plugin.logging.Log;
 import org.codehaus.plexus.util.StringUtils;
 
-// TODO: Auto-generated Javadoc
 /**
  * This rule checks that the Java version is allowed.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
- * @version $Id: RequireJavaVersion.java 661179 2008-05-29 02:07:01Z brianf $
+ * @version $Id: RequireJavaVersion.java 805190 2009-08-17 22:30:49Z hboutemy $
  */
 public class RequireJavaVersion
     extends AbstractVersionEnforcer
@@ -43,7 +43,7 @@ public class RequireJavaVersion
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#execute(org.apache.maven.enforcer.rule.api.EnforcerRuleHelper)
      */
     public void execute( EnforcerRuleHelper helper )
@@ -67,7 +67,7 @@ public class RequireJavaVersion
 
     /**
      * Converts a jdk string from 1.5.0-11b12 to a single 3 digit version like 1.5.0-11
-     * 
+     *
      * @param theJdkVersion to be converted.
      * @return the converted string.
      */
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireMavenVersion.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireMavenVersion.java
index 5f3b64a..dea06bf 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireMavenVersion.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireMavenVersion.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
@@ -24,12 +25,11 @@ import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.execution.RuntimeInformation;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
-// TODO: Auto-generated Javadoc
 /**
  * This rule checks that the Maven version is allowed.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
- * @version $Id: RequireMavenVersion.java 675992 2008-07-11 15:42:48Z hboutemy $
+ * @version $Id: RequireMavenVersion.java 805190 2009-08-17 22:30:49Z hboutemy $
  */
 public class RequireMavenVersion
     extends AbstractVersionEnforcer
@@ -37,7 +37,7 @@ public class RequireMavenVersion
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#execute(org.apache.maven.enforcer.rule.api.EnforcerRuleHelper)
      */
     public void execute( EnforcerRuleHelper helper )
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java
index b303253..34eb064 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java
@@ -19,13 +19,6 @@ package org.apache.maven.plugins.enforcer;
  * under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
@@ -38,9 +31,16 @@ import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluatio
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
 /**
  * This rule checks that this pom or its parents don't define a repository.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class RequireNoRepositories
@@ -66,6 +66,16 @@ public class RequireNoRepositories
      */
     public List allowedPluginRepositories = Collections.EMPTY_LIST;
 
+    /**
+     * Whether to allow repositories which only resolve snapshots. By default they are banned.
+     */
+    public boolean allowSnapshotRepositories = false;
+
+    /**
+     * Whether to allow plugin repositories which only resolve snapshots. By default they are banned.
+     */
+    public boolean allowSnapshotPluginRepositories = false;
+
     /*
      * (non-Javadoc)
      * @see
@@ -97,12 +107,14 @@ public class RequireNoRepositories
                     List repos = model.getRepositories();
                     if ( repos != null && !repos.isEmpty() )
                     {
-                        List bannedRepos = findBannedRepositories( repos, allowedRepositories );
+                        List bannedRepos =
+                            findBannedRepositories( repos, allowedRepositories, allowSnapshotRepositories );
                         if ( !bannedRepos.isEmpty() )
                         {
                             badModels.add( model );
-                            newMsg.append( model.getGroupId() + ":" + model.getArtifactId() + " version:"
-                                + model.getVersion() + " has repositories " + bannedRepos );
+                            newMsg.append(
+                                model.getGroupId() + ":" + model.getArtifactId() + " version:" + model.getVersion()
+                                    + " has repositories " + bannedRepos );
                         }
                     }
                 }
@@ -111,12 +123,14 @@ public class RequireNoRepositories
                     List repos = model.getPluginRepositories();
                     if ( repos != null && !repos.isEmpty() )
                     {
-                        List bannedRepos = findBannedRepositories( repos, allowedPluginRepositories );
+                        List bannedRepos =
+                            findBannedRepositories( repos, allowedPluginRepositories, allowSnapshotPluginRepositories );
                         if ( !bannedRepos.isEmpty() )
                         {
                             badModels.add( model );
-                            newMsg.append( model.getGroupId() + ":" + model.getArtifactId() + " version:"
-                                + model.getVersion() + " has plugin repositories " + bannedRepos );
+                            newMsg.append(
+                                model.getGroupId() + ":" + model.getArtifactId() + " version:" + model.getVersion()
+                                    + " has plugin repositories " + bannedRepos );
                         }
                     }
                 }
@@ -157,7 +171,7 @@ public class RequireNoRepositories
         }
     }
 
-    private static List findBannedRepositories( List repos, List allowedRepos )
+    private static List findBannedRepositories( List repos, List allowedRepos, boolean allowSnapshots )
     {
         List bannedRepos = new ArrayList( allowedRepos.size() );
         for ( Iterator i = repos.iterator(); i.hasNext(); )
@@ -165,7 +179,14 @@ public class RequireNoRepositories
             Repository r = (Repository) i.next();
             if ( !allowedRepos.contains( r.getId() ) )
             {
-                bannedRepos.add( r.getId() );
+                if ( !allowSnapshots || r.getReleases().isEnabled() )
+                {
+                    // if we are not allowing snapshots and this repo is enabled for releases
+                    // it is banned.  We don't care whether it is enabled for snapshots
+                    // if you define a repo and don't enable it for anything, then we have nothing 
+                    // to worry about
+                    bannedRepos.add( r.getId() );
+                }
             }
         }
         return bannedRepos;
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireOS.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireOS.java
index 2b6b772..df1ed8b 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireOS.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireOS.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.util.Iterator;
 
@@ -31,13 +32,12 @@ import org.apache.maven.profiles.activation.OperatingSystemProfileActivator;
 import org.codehaus.plexus.util.Os;
 import org.codehaus.plexus.util.StringUtils;
 
-// TODO: Auto-generated Javadoc
 /**
  * This rule checks that the OS is allowed by combinations of family, name, version and cpu architecture. The behavior
  * is exactly the same as the Maven Os profile activation so the same values are allowed here.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
- * @version $Id: RequireOS.java 675992 2008-07-11 15:42:48Z hboutemy $
+ * @version $Id: RequireOS.java 805190 2009-08-17 22:30:49Z hboutemy $
  */
 public class RequireOS
     extends AbstractStandardEnforcerRule
@@ -86,7 +86,7 @@ public class RequireOS
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#execute(org.apache.maven.enforcer.rule.api.EnforcerRuleHelper)
      */
     public void execute( EnforcerRuleHelper helper )
@@ -131,7 +131,7 @@ public class RequireOS
 
     /**
      * Log the current OS information.
-     * 
+     *
      * @param log the log
      * @param info the info
      */
@@ -154,7 +154,7 @@ public class RequireOS
     /**
      * Helper method to determine if the current OS is allowed based on the injected values for family, name, version
      * and arch.
-     * 
+     *
      * @return true if the version is allowed.
      */
     public boolean isAllowed()
@@ -166,7 +166,7 @@ public class RequireOS
 
     /**
      * Helper method to check that at least one of family, name, version or arch is set.
-     * 
+     *
      * @return true if all parameters are empty.
      */
     public boolean allParamsEmpty()
@@ -177,7 +177,7 @@ public class RequireOS
 
     /**
      * Creates a Profile object that contains the activation information.
-     * 
+     *
      * @return a properly populated profile to be used for OS validation.
      */
     private Profile createProfile()
@@ -189,7 +189,7 @@ public class RequireOS
 
     /**
      * Creates an Activation object that contains the ActivationOS information.
-     * 
+     *
      * @return a properly populated Activation object.
      */
     private Activation createActivation()
@@ -202,7 +202,7 @@ public class RequireOS
 
     /**
      * Creates an ActivationOS object containing family, name, version and arch.
-     * 
+     *
      * @return a properly populated ActivationOS object.
      */
     private ActivationOS createOsBean()
@@ -232,7 +232,7 @@ public class RequireOS
      * <li>os/400</li>
      * </ul>
      * Note: '!' is allowed at the beginning of the string and still considered valid.
-     * 
+     *
      * @param theFamily the family to check.
      * @return true if one of the valid families.
      */
@@ -247,7 +247,7 @@ public class RequireOS
 
     /**
      * Gets the arch.
-     * 
+     *
      * @return the arch
      */
     public String getArch()
@@ -257,7 +257,7 @@ public class RequireOS
 
     /**
      * Sets the arch.
-     * 
+     *
      * @param theArch the arch to set
      */
     public void setArch( String theArch )
@@ -267,7 +267,7 @@ public class RequireOS
 
     /**
      * Gets the family.
-     * 
+     *
      * @return the family
      */
     public String getFamily()
@@ -277,7 +277,7 @@ public class RequireOS
 
     /**
      * Sets the family.
-     * 
+     *
      * @param theFamily the family to set
      */
     public void setFamily( String theFamily )
@@ -287,7 +287,7 @@ public class RequireOS
 
     /**
      * Gets the name.
-     * 
+     *
      * @return the name
      */
     public String getName()
@@ -297,7 +297,7 @@ public class RequireOS
 
     /**
      * Sets the name.
-     * 
+     *
      * @param theName the name to set
      */
     public void setName( String theName )
@@ -307,7 +307,7 @@ public class RequireOS
 
     /**
      * Gets the version.
-     * 
+     *
      * @return the version
      */
     public String getVersion()
@@ -317,7 +317,7 @@ public class RequireOS
 
     /**
      * Sets the version.
-     * 
+     *
      * @param theVersion the version to set
      */
     public void setVersion( String theVersion )
@@ -327,7 +327,7 @@ public class RequireOS
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#getCacheId()
      */
     public String getCacheId()
@@ -355,7 +355,7 @@ public class RequireOS
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#isCacheable()
      */
     public boolean isCacheable()
@@ -366,7 +366,7 @@ public class RequireOS
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#isResultValid(org.apache.maven.enforcer.rule.api.EnforcerRule)
      */
     public boolean isResultValid( EnforcerRule theCachedRule )
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
index d4f94e6..590e8a1 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.io.File;
 import java.io.IOException;
@@ -67,17 +68,15 @@ import org.apache.maven.project.MavenProject;
 import org.apache.maven.settings.Settings;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
-import org.codehaus.plexus.util.CollectionUtils;
 import org.codehaus.plexus.util.ReflectionUtils;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
-// TODO: Auto-generated Javadoc
 /**
  * This rule will enforce that all plugins specified in the poms have a version declared.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
- * @version $Id: RequirePluginVersions.java 746626 2009-02-22 03:13:03Z brianf $
+ * @version $Id: RequirePluginVersions.java 1028144 2010-10-28 00:10:58Z brianf $
  */
 public class RequirePluginVersions
     extends AbstractNonCacheableEnforcerRule
@@ -114,10 +113,11 @@ public class RequirePluginVersions
      * @deprecated
      */
     public List unCheckedPlugins;
-    
+
     /**
      * Same as unCheckedPlugins but as a comma list to better support properties. Sample form:
      * <code>group:artifactId,group2:artifactId2</code>
+     * @since 1.0-beta-1
      */
     public String unCheckedPluginList;
 
@@ -153,7 +153,7 @@ public class RequirePluginVersions
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#execute(org.apache.maven.enforcer.rule.api.EnforcerRuleHelper)
      */
     public void execute( EnforcerRuleHelper helper )
@@ -165,7 +165,7 @@ public class RequirePluginVersions
         try
         {
             // get the various expressions out of the helper.
-            
+
             project = (MavenProject) helper.evaluate( "${project}" );
             LifecycleExecutor life;
             life = (LifecycleExecutor) helper.getComponent( LifecycleExecutor.class );
@@ -175,15 +175,15 @@ public class RequirePluginVersions
             }
             catch (Exception e)
             {
-                log.warn( "This rule is not compatible with the current version of Maven. The rule is not able to perform any checks.");
+                log.info( "The requirePluginVersions rule is currently not compatible with Maven3.");
                 /*
-                 * 
+                 *
                  * NOTE: If this happens, we're bailing out right away.
-                 * 
-                 * 
+                 *
+                 *
                  */
                 return;
-            }    
+            }
             session = (MavenSession) helper.evaluate( "${session}" );
             pluginManager = (PluginManager) helper.getComponent( PluginManager.class );
             factory = (ArtifactFactory) helper.getComponent( ArtifactFactory.class );
@@ -200,7 +200,7 @@ public class RequirePluginVersions
             allPlugins = addAdditionalPlugins( allPlugins, additionalPlugins );
             allPlugins.addAll( getProfilePlugins( project ) );
 
-            
+
             // pull out any we should skip
             allPlugins = (Set) removeUncheckedPlugins( combineUncheckedPlugins( unCheckedPlugins, unCheckedPluginList ), allPlugins );
 
@@ -338,10 +338,9 @@ public class RequirePluginVersions
 
     /**
      * Remove the plugins that the user doesn't want to check.
-     * 
+     *
      * @param uncheckedPlugins
      * @param plugins
-     * @param field
      * @return
      * @throws MojoExecutionException
      */
@@ -385,10 +384,10 @@ public class RequirePluginVersions
         }
         return uncheckedPlugins;
     }
-    
+
     /**
      * Add the additional plugins if they don't exist yet.
-     * 
+     *
      * @param existing the existing
      * @param additional the additional
      * @return the sets the
@@ -421,7 +420,7 @@ public class RequirePluginVersions
 
     /**
      * Helper method to parse and inject a Plugin.
-     * 
+     *
      * @param pluginString
      * @return
      * @throws MojoExecutionException
@@ -454,7 +453,7 @@ public class RequirePluginVersions
 
     /**
      * Finds the plugins that are listed in active profiles.
-     * 
+     *
      * @param project the project
      * @return the profile plugins
      */
@@ -484,7 +483,7 @@ public class RequirePluginVersions
 
     /**
      * Given a plugin, this will retrieve the matching plugin artifact from the model.
-     * 
+     *
      * @param plugin plugin to lookup
      * @param project project to search
      * @return matching plugin, <code>null</code> if not found.
@@ -513,7 +512,7 @@ public class RequirePluginVersions
 
     /**
      * Resolve plugin.
-     * 
+     *
      * @param plugin the plugin
      * @param project the project
      * @return the plugin
@@ -544,7 +543,7 @@ public class RequirePluginVersions
     /**
      * Gets the plugins that are bound to the defined phases. This does not find plugins bound in the pom to a phase
      * later than the plugin is executing.
-     * 
+     *
      * @param life the life
      * @param project the project
      * @param thePhases the the phases
@@ -556,7 +555,7 @@ public class RequirePluginVersions
     protected Set getBoundPlugins( LifecycleExecutor life, MavenProject project, String thePhases )
         throws PluginNotFoundException, LifecycleExecutionException, IllegalAccessException
     {
-       
+
         Set allPlugins = new HashSet();
 
         // lookup the bindings for all the passed in phases
@@ -588,7 +587,7 @@ public class RequirePluginVersions
      */
     /**
      * Checks for valid version specified.
-     * 
+     *
      * @param helper the helper
      * @param source the source
      * @param pluginWrappers the plugins
@@ -658,7 +657,7 @@ public class RequirePluginVersions
 
     /**
      * Checks if is snapshot.
-     * 
+     *
      * @param baseVersion the base version
      * @return true, if is snapshot
      */
@@ -680,7 +679,7 @@ public class RequirePluginVersions
      */
     /**
      * Gets the all plugins.
-     * 
+     *
      * @param project the project
      * @param lifecycle the lifecycle
      * @return the all plugins
@@ -735,7 +734,7 @@ public class RequirePluginVersions
      */
     /**
      * Gets the phase to lifecycle map.
-     * 
+     *
      * @return the phase to lifecycle map
      * @throws LifecycleExecutionException the lifecycle execution exception
      */
@@ -773,7 +772,7 @@ public class RequirePluginVersions
 
     /**
      * Gets the lifecycle for phase.
-     * 
+     *
      * @param phase the phase
      * @return the lifecycle for phase
      * @throws BuildFailureException the build failure exception
@@ -793,7 +792,7 @@ public class RequirePluginVersions
 
     /**
      * Find mappings for lifecycle.
-     * 
+     *
      * @param project the project
      * @param lifecycle the lifecycle
      * @return the map
@@ -851,7 +850,7 @@ public class RequirePluginVersions
 
     /**
      * Find optional mojos for lifecycle.
-     * 
+     *
      * @param project the project
      * @param lifecycle the lifecycle
      * @return the list
@@ -897,7 +896,7 @@ public class RequirePluginVersions
 
     /**
      * Find extension.
-     * 
+     *
      * @param project the project
      * @param role the role
      * @param roleHint the role hint
@@ -945,7 +944,7 @@ public class RequirePluginVersions
 
     /**
      * Verify plugin.
-     * 
+     *
      * @param plugin the plugin
      * @param project the project
      * @param settings the settings
@@ -998,7 +997,7 @@ public class RequirePluginVersions
     /**
      * Gets all plugin entries in build.plugins, build.pluginManagement.plugins, profile.build.plugins, reporting and
      * profile.reporting in this project and all parents
-     * 
+     *
      * @param project the project
      * @return the all plugin entries wrapped in a PluginWrapper Object
      * @throws ArtifactResolutionException the artifact resolution exception
@@ -1011,9 +1010,19 @@ public class RequirePluginVersions
     {
         List plugins = new ArrayList();
         // get all the pom models
+        
+        String pomName = null;
+        try
+        {
+            pomName = project.getFile().getName();
+        }
+        catch (Exception e)
+        {
+            pomName = "pom.xml";
+        }
         List models =
             utils.getModelsRecursively( project.getGroupId(), project.getArtifactId(), project.getVersion(),
-                                        new File( project.getBasedir(), "pom.xml" ) );
+                                        new File( project.getBasedir(), pomName ) );
 
         // now find all the plugin entries, either in
         // build.plugins or build.pluginManagement.plugins, profiles.plugins and reporting
@@ -1094,7 +1103,7 @@ public class RequirePluginVersions
 
     /**
      * Checks if is ban latest.
-     * 
+     *
      * @return the banLatest
      */
     protected boolean isBanLatest()
@@ -1104,7 +1113,7 @@ public class RequirePluginVersions
 
     /**
      * Sets the ban latest.
-     * 
+     *
      * @param theBanLatest the banLatest to set
      */
     protected void setBanLatest( boolean theBanLatest )
@@ -1114,7 +1123,7 @@ public class RequirePluginVersions
 
     /**
      * Checks if is ban release.
-     * 
+     *
      * @return the banRelease
      */
     protected boolean isBanRelease()
@@ -1124,7 +1133,7 @@ public class RequirePluginVersions
 
     /**
      * Sets the ban release.
-     * 
+     *
      * @param theBanRelease the banRelease to set
      */
     protected void setBanRelease( boolean theBanRelease )
@@ -1134,7 +1143,7 @@ public class RequirePluginVersions
 
     /**
      * Gets the message.
-     * 
+     *
      * @return the message
      */
     protected String getMessage()
@@ -1144,7 +1153,7 @@ public class RequirePluginVersions
 
     /**
      * Sets the message.
-     * 
+     *
      * @param theMessage the message to set
      */
     protected void setMessage( String theMessage )
@@ -1154,7 +1163,7 @@ public class RequirePluginVersions
 
     /**
      * Gets the utils.
-     * 
+     *
      * @return the utils
      */
     protected EnforcerRuleUtils getUtils()
@@ -1164,7 +1173,7 @@ public class RequirePluginVersions
 
     /**
      * Sets the utils.
-     * 
+     *
      * @param theUtils the utils to set
      */
     protected void setUtils( EnforcerRuleUtils theUtils )
@@ -1174,7 +1183,7 @@ public class RequirePluginVersions
 
     /**
      * Checks if is ban snapshots.
-     * 
+     *
      * @return the banSnapshots
      */
     public boolean isBanSnapshots()
@@ -1184,7 +1193,7 @@ public class RequirePluginVersions
 
     /**
      * Sets the ban snapshots.
-     * 
+     *
      * @param theBanSnapshots the banSnapshots to set
      */
     public void setBanSnapshots( boolean theBanSnapshots )
@@ -1194,7 +1203,7 @@ public class RequirePluginVersions
 
     /**
      * Checks if is ban timestamps.
-     * 
+     *
      * @return the banTimestamps
      */
     public boolean isBanTimestamps()
@@ -1204,7 +1213,7 @@ public class RequirePluginVersions
 
     /**
      * Sets the ban timestamps.
-     * 
+     *
      * @param theBanTimestamps the banTimestamps to set
      */
     public void setBanTimestamps( boolean theBanTimestamps )
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireProperty.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireProperty.java
index 53cad67..fec2a23 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireProperty.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireProperty.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,16 +18,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 
-// TODO: Auto-generated Javadoc
 /**
  * This rule checks that certain properties are set.
- * 
+ *
  * @author Paul Gier
  */
 public class RequireProperty
@@ -43,7 +43,7 @@ public class RequireProperty
 
     /**
      * Execute the rule.
-     * 
+     *
      * @param helper the helper
      * @throws EnforcerRuleException the enforcer rule exception
      */
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java
index 47d466a..c0287ab 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,25 +18,27 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Set;
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.artifact.filter.StrictPatternExcludesArtifactFilter;
+import org.apache.maven.shared.artifact.filter.StrictPatternIncludesArtifactFilter;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 
-// TODO: Auto-generated Javadoc
 /**
  * This rule checks that no snapshots are included.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
- * @version $Id: RequireReleaseDeps.java 683054 2008-08-06 00:13:22Z brianf $
+ * @version $Id: RequireReleaseDeps.java 989820 2010-08-26 16:52:46Z pgier $
  */
 public class RequireReleaseDeps
     extends AbstractBanDependencies
@@ -42,19 +46,31 @@ public class RequireReleaseDeps
 
     /**
      * Allows this rule to execute only when this project is a release.
-     * 
+     *
      * @parameter
      */
     public boolean onlyWhenRelease = false;
 
     /**
      * Allows this rule to fail when the parent is defined as a snapshot.
-     * 
+     *
      * @parameter
      */
     public boolean failWhenParentIsSnapshot = true;
 
     /**
+     * Dependencies to ignore when checking for release versions.  For example, inter-module dependencies 
+     * can be excluded from the check and therefore allowed to contain snapshot versions.
+     */
+    public List excludes = null;
+
+    /**
+     * Dependencies to include when checking for release versions.  If any of the included dependencies
+     * have snapshot versions, the rule will fail.
+     */
+    public List includes = null;
+
+    /**
      * Override parent to allow optional ignore of this rule.
      */
     public void execute( EnforcerRuleHelper helper )
@@ -112,7 +128,7 @@ public class RequireReleaseDeps
 
     /**
      * Checks the set of dependencies to see if any snapshots are included
-     * 
+     *
      * @param dependencies the dependencies
      * @param log the log
      * @return the sets the
@@ -121,22 +137,61 @@ public class RequireReleaseDeps
     protected Set checkDependencies( Set dependencies, Log log )
         throws EnforcerRuleException
     {
-        Set foundExcludes = new HashSet();
+        Set foundSnapshots = new HashSet();
 
-        Iterator DependencyIter = dependencies.iterator();
+        Set filteredDependencies = this.filterArtifacts( dependencies );
+        
+        Iterator DependencyIter = filteredDependencies.iterator();
         while ( DependencyIter.hasNext() )
         {
             Artifact artifact = (Artifact) DependencyIter.next();
 
             if ( artifact.isSnapshot() )
             {
-                foundExcludes.add( artifact );
+                foundSnapshots.add( artifact );
             }
         }
 
-        return foundExcludes;
+        return foundSnapshots;
     }
     
+    /*
+     * Filter the dependency artifacts according to the includes and excludes
+     * If includes and excludes are both null, the original set is returned.
+     * 
+     * @param dependencies the list of dependencies to filter
+     * @return the resulting set of dependencies
+     */
+    public Set filterArtifacts( Set dependencies )
+    {
+        if ( includes == null && excludes == null )
+        {
+            return dependencies;
+        }
+        
+        AndArtifactFilter filter = new AndArtifactFilter( );
+        if ( includes != null )
+        {
+            filter.add( new StrictPatternIncludesArtifactFilter( includes ) );
+        }
+        if ( excludes != null )
+        {
+            filter.add( new StrictPatternExcludesArtifactFilter( excludes ) );
+        }
+        
+        Set result = new HashSet();
+        Iterator iter = dependencies.iterator();
+        while ( iter.hasNext() )
+        {
+            Artifact artifact = (Artifact) iter.next();
+            if ( filter.include( artifact ) )
+            {
+                result.add( artifact );
+            }
+        }
+        return result;
+    }
+
     public boolean isOnlyWhenRelease()
     {
         return onlyWhenRelease;
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java
index 7bf384e..8856f51 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
@@ -24,10 +25,9 @@ import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 
-// TODO: Auto-generated Javadoc
 /**
  * This rule checks that the current project is not a snapshot.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class RequireReleaseVersion
@@ -36,14 +36,14 @@ public class RequireReleaseVersion
 
     /**
      * Allows this rule to fail when the parent is defined as a snapshot.
-     * 
+     *
      * @parameter
      */
     public boolean failWhenParentIsSnapshot = true;
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.enforcer.rule.api.EnforcerRule#execute(org.apache.maven.enforcer.rule.api.EnforcerRuleHelper)
      */
     public void execute( EnforcerRuleHelper theHelper )
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
new file mode 100644
index 0000000..d74ee7f
--- /dev/null
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
@@ -0,0 +1,122 @@
+package org.apache.maven.plugins.enforcer.utils;
+/*
+ * 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.
+ */
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.shared.dependency.tree.DependencyNode;
+import org.apache.maven.shared.dependency.tree.traversal.DependencyNodeVisitor;
+
+public class DependencyVersionMap implements DependencyNodeVisitor {
+  
+  private boolean demandReleasedVersions = false;
+  
+  private Map<String, List<DependencyNode>> idsToNode;
+  
+  private List<DependencyNode> snapshots;
+  
+  public DependencyVersionMap(Log log){
+    idsToNode = new HashMap<String, List<DependencyNode>>();
+    snapshots = new ArrayList<DependencyNode>();
+  }
+
+  public DependencyVersionMap(boolean demandReleasedVersions, Log log){
+    this(log);
+    this.demandReleasedVersions = demandReleasedVersions;
+  }
+  
+  public boolean visit(DependencyNode node) {
+    addDependency(node);
+    if (containsConflicts(node)){
+      return false;
+    }
+    if (demandReleasedVersions){
+      if (node.getArtifact().isSnapshot()){
+        snapshots.add(node);
+        return false;
+      }
+    }
+    return true;
+  }
+
+  public boolean endVisit(DependencyNode node) {
+    return true;
+  } 
+  
+  private String constructKey(DependencyNode node){
+    return constructKey(node.getArtifact());
+  }
+  
+  private String constructKey(Artifact artifact){
+    return artifact.getGroupId()+":"+artifact.getArtifactId();
+  }
+
+  public void addDependency(DependencyNode node) {
+    String key = constructKey(node);
+    if (node.getArtifact().isSnapshot()){
+      snapshots.add(node);
+    }
+    List<DependencyNode> nodes = idsToNode.get(key);
+    if (nodes == null){
+      nodes = new ArrayList<DependencyNode>();
+      idsToNode.put(key,nodes);
+    }
+    nodes.add(node);
+  }  
+  
+  public List<DependencyNode> getSnapshots(){
+    return snapshots;
+  }
+  
+  private boolean containsConflicts(DependencyNode node){
+    return containsConflicts(node.getArtifact());
+  }
+
+  private boolean containsConflicts(Artifact artifact){
+    return containsConflicts(idsToNode.get(constructKey(artifact)));
+  }
+
+  private boolean containsConflicts(List<DependencyNode> nodes){
+    String version = null;
+    for (DependencyNode node : nodes){
+      if (version == null){
+        version = node.getArtifact().getVersion();
+      } else {
+        if (version.compareTo(node.getArtifact().getVersion()) != 0){
+          return true;
+        }
+      }      
+    }
+    return false;
+  }
+  
+  public List<List<DependencyNode>> getConflictedVersionNumbers(){
+    List<List<DependencyNode>> output = new ArrayList<List<DependencyNode>>();
+    for (List<DependencyNode> nodes : idsToNode.values()) {
+      if(containsConflicts(nodes)){
+        output.add(nodes);
+      }
+    }
+    return output;
+  }
+}
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java
index ba67da8..f211843 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer.utils;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer.utils;
 
 import java.io.File;
 import java.io.IOException;
@@ -45,12 +46,12 @@ import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 // TODO: Auto-generated Javadoc
 /**
  * The Class EnforcerRuleUtils.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class EnforcerRuleUtils
 {
-    
+
     /** The factory. */
     ArtifactFactory factory;
 
@@ -73,7 +74,7 @@ public class EnforcerRuleUtils
 
     /**
      * Instantiates a new enforcer rule utils.
-     * 
+     *
      * @param theFactory the the factory
      * @param theResolver the the resolver
      * @param theLocal the the local
@@ -95,12 +96,12 @@ public class EnforcerRuleUtils
 
     /**
      * Instantiates a new enforcer rule utils.
-     * 
+     *
      * @param helper the helper
      */
     public EnforcerRuleUtils( EnforcerRuleHelper helper )
     {
-     
+
     	this.helper = helper;
     	// get the various expressions out of the
         // helper.
@@ -126,11 +127,11 @@ public class EnforcerRuleUtils
 
     /**
      * Gets the pom model for this file.
-     * 
+     *
      * @param pom the pom
-     * 
+     *
      * @return the model
-     * 
+     *
      * @throws IOException Signals that an I/O exception has occurred.
      * @throws XmlPullParserException the xml pull parser exception
      */
@@ -156,14 +157,14 @@ public class EnforcerRuleUtils
      * This method gets the model for the defined artifact.
      * Looks first in the filesystem, then tries to get it
      * from the repo.
-     * 
+     *
      * @param groupId the group id
      * @param artifactId the artifact id
      * @param version the version
      * @param pom the pom
-     * 
+     *
      * @return the pom model
-     * 
+     *
      * @throws ArtifactResolutionException the artifact resolution exception
      * @throws ArtifactNotFoundException the artifact not found exception
      * @throws XmlPullParserException the xml pull parser exception
@@ -217,14 +218,14 @@ public class EnforcerRuleUtils
     /**
      * This method loops through all the parents, getting
      * each pom model and then its parent.
-     * 
+     *
      * @param groupId the group id
      * @param artifactId the artifact id
      * @param version the version
      * @param pom the pom
-     * 
+     *
      * @return the models recursively
-     * 
+     *
      * @throws ArtifactResolutionException the artifact resolution exception
      * @throws ArtifactNotFoundException the artifact not found exception
      * @throws IOException Signals that an I/O exception has occurred.
@@ -249,7 +250,7 @@ public class EnforcerRuleUtils
             }
             // calculate the recursive path
             File parentPom = new File( pom.getParent(), relativePath );
-            
+
             // if relative path is a directory, append pom.xml
             if ( parentPom.isDirectory() )
             {
@@ -270,12 +271,12 @@ public class EnforcerRuleUtils
 
     /**
      * Make sure the model is the one I'm expecting.
-     * 
+     *
      * @param groupId the group id
      * @param artifactId the artifact id
      * @param version the version
      * @param model Model being checked.
-     * 
+     *
      * @return true, if check if model matches
      */
     protected boolean checkIfModelMatches ( String groupId, String artifactId, String version, Model model )
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/PluginWrapper.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/PluginWrapper.java
index 90c63e5..4209d0f 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/PluginWrapper.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/PluginWrapper.java
@@ -1,5 +1,24 @@
 package org.apache.maven.plugins.enforcer.utils;
 
+/*
+ * 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.
+ */
+
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -100,7 +119,7 @@ public class PluginWrapper
     {
         this.source = source;
     }
-    
-    
+
+
 
 }
diff --git a/enforcer-rules/src/site/apt/alwaysFail.apt b/enforcer-rules/src/site/apt/alwaysFail.apt.vm
similarity index 97%
rename from enforcer-rules/src/site/apt/alwaysFail.apt
rename to enforcer-rules/src/site/apt/alwaysFail.apt.vm
index 3d380a1..d00b918 100644
--- a/enforcer-rules/src/site/apt/alwaysFail.apt
+++ b/enforcer-rules/src/site/apt/alwaysFail.apt.vm
@@ -38,7 +38,7 @@ Always Fail
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0</version>
+        <version>${project.version}</version>
         <executions>
           <execution>
             <id>enforce</id>
diff --git a/enforcer-rules/src/site/apt/alwaysPass.apt b/enforcer-rules/src/site/apt/alwaysPass.apt.vm
similarity index 97%
rename from enforcer-rules/src/site/apt/alwaysPass.apt
rename to enforcer-rules/src/site/apt/alwaysPass.apt.vm
index 6fc743c..569ac66 100644
--- a/enforcer-rules/src/site/apt/alwaysPass.apt
+++ b/enforcer-rules/src/site/apt/alwaysPass.apt.vm
@@ -38,7 +38,7 @@ Always Pass
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0</version>
+        <version>${project.version}</version>
         <executions>
           <execution>
             <id>enforce</id>
diff --git a/enforcer-rules/src/site/apt/bannedDependencies.apt b/enforcer-rules/src/site/apt/bannedDependencies.apt.vm
similarity index 92%
rename from enforcer-rules/src/site/apt/bannedDependencies.apt
rename to enforcer-rules/src/site/apt/bannedDependencies.apt.vm
index 5ab6a26..8afcac3 100644
--- a/enforcer-rules/src/site/apt/bannedDependencies.apt
+++ b/enforcer-rules/src/site/apt/bannedDependencies.apt.vm
@@ -32,7 +32,7 @@ Banned Dependencies
    
    * searchTransitive - if transitive dependencies should be checked.
    
-   * excludes - a list of artifacts to ban. The format is groupId[:artifactId][:version] where artifactId and version are optional. Wildcards may be used to replace an entire section.
+   * excludes - a list of artifacts to ban. The format is groupId[:artifactId][:version][:type][:scope] where artifactId, version, type, and scope are optional. Wildcards may be used to replace an entire section.
       Examples:
        
         * org.apache.maven
@@ -43,6 +43,8 @@ Banned Dependencies
         
         * org.apache.maven:*:1.2
         
+        * org.apache.maven:*:*:jar:test
+        
         []
 
    * includes - a list of artifacts to include. These are exceptions to the excludes. It is meant to allow wide exclusion rules with wildcards and fine tune using includes. If nothing has been excluded, then the includes have no effect. In otherwords, includes only subtract from artifacts that matched an exclude rule.
@@ -64,7 +66,7 @@ Banned Dependencies
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0</version>
+        <version>${project.version}</version>
         <executions>
           <execution>
             <id>enforce-banned-dependencies</id>
diff --git a/enforcer-rules/src/site/apt/dependencyConvergence.apt.vm b/enforcer-rules/src/site/apt/dependencyConvergence.apt.vm
new file mode 100644
index 0000000..6c8691a
--- /dev/null
+++ b/enforcer-rules/src/site/apt/dependencyConvergence.apt.vm
@@ -0,0 +1,118 @@
+ ~~ 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.
+
+ -----
+ Comparing against a specific artifact
+ -----
+ -----
+ 2008-09-13
+ -----
+
+  This rule requires that dependency version numbers converge.  If a project has two dependencies, A and B, both depending on the same artifact, C, this rule will fail the build if A depends on a different version of C then the version of C depended on by B.
+
+  Here is a concrete example.
+
+  This will cause a build to fail.
+  
+-----------------------------------------------------------------------------------
+
+  <dependencies>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-jdk14</artifactId>
+      <version>1.6.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-nop</artifactId>
+      <version>1.6.0</version>
+    </dependency>
+  </dependencies>  
+-----------------------------------------------------------------------------------
+
+  With this being logged during compilation
+
+-----------------------------------------------------------------------------------
+Dependency convergence error for org.slf4j:slf4j-api1.6.1 paths to dependency are:
+
+[ERROR]
+Dependency convergence error for org.slf4j:slf4j-api:1.6.1 paths to dependency are:
++-org.myorg:my-project:1.0.0-SNAPSHOT
+  +-org.slf4j:slf4j-jdk14:1.6.1
+    +-org.slf4j:slf4j-api:1.6.1
+and
++-org.myorg:my-project:1.0.0-SNAPSHOT
+  +-org.slf4j:slf4j-nop:1.6.0
+    +-org.slf4j:slf4j-api:1.6.0
+
+
+-----------------------------------------------------------------------------------
+
+  And this will succeed.
+  
+-----------------------------------------------------------------------------------
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-jdk14</artifactId>
+      <version>1.6.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-nop</artifactId>
+      <version>1.6.0</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.slf4j</groupId>
+          <artifactId>slf4j-api</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+-----------------------------------------------------------------------------------
+
+
+  Here is how a project should be setup to use this rule
+
+-----------------------------------------------------------------------------------
+<project>
+  ...
+  <build>
+    <plugins>
+      ...
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>${project.version}</version>
+        <executions>
+          <execution>
+            <id>enforce</id>
+            <configuration>
+              <rules>
+                <DependencyConvergence/>
+              </rules>
+            </configuration>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      ...
+    </plugins>
+  </build>
+  ...
+</project>
+-----------------------------------------------------------------------------------
diff --git a/enforcer-rules/src/site/apt/evaluateBeanshell.apt b/enforcer-rules/src/site/apt/evaluateBeanshell.apt.vm
similarity index 94%
rename from enforcer-rules/src/site/apt/evaluateBeanshell.apt
rename to enforcer-rules/src/site/apt/evaluateBeanshell.apt.vm
index 5eb32a0..2efabb5 100644
--- a/enforcer-rules/src/site/apt/evaluateBeanshell.apt
+++ b/enforcer-rules/src/site/apt/evaluateBeanshell.apt.vm
@@ -47,7 +47,7 @@ Beanshell
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0</version>
+        <version>${project.version}</version>
         <executions>
           <execution>
             <id>enforce-beanshell</id>
@@ -57,7 +57,7 @@ Beanshell
             <configuration>
               <rules>
                 <evaluateBeanshell>
-                  <condition>${project.artifactId} == foo</condition>
+                  <condition>\${project.artifactId} == foo</condition>
                 </evaluateBeanshell>
               </rules>
               <fail>true</fail>
diff --git a/enforcer-rules/src/site/apt/index.apt b/enforcer-rules/src/site/apt/index.apt
index 6fdc96a..9f624ad 100644
--- a/enforcer-rules/src/site/apt/index.apt
+++ b/enforcer-rules/src/site/apt/index.apt
@@ -33,6 +33,10 @@ Standard Rules
  
   * {{{./bannedDependencies.html}bannedDependencies}} - enforces that excluded dependencies aren't included.
 
+  * bannedPlugins - enforces that excluded plugins aren't included.
+  
+  * {{{./dependencyConvergence.html}dependencyConvergence}} - ensure all dependencies converge to the same version.
+
   * {{{./evaluateBeanshell.html}evaluateBeanshell}} - evaluates a beanshell script.
 
   * {{{./requireReleaseDeps.html}requireReleaseDeps}} - enforces that no snapshots are included as dependencies.
@@ -57,4 +61,4 @@ Standard Rules
 
   []
 
-  You may also create and inject your own custom rules by following the {{{http://maven.apache.org/enforcer/enforcer-api/writing-a-custom-rule.html}maven-enforcer-rule-api}} instructions.
\ No newline at end of file
+  You may also create and inject your own custom rules by following the {{{http://maven.apache.org/enforcer/enforcer-api/writing-a-custom-rule.html}maven-enforcer-rule-api}} instructions.
diff --git a/enforcer-rules/src/site/apt/noSnapshots.apt b/enforcer-rules/src/site/apt/noSnapshots.apt.vm
similarity index 97%
rename from enforcer-rules/src/site/apt/noSnapshots.apt
rename to enforcer-rules/src/site/apt/noSnapshots.apt.vm
index ba4f63a..8465b56 100644
--- a/enforcer-rules/src/site/apt/noSnapshots.apt
+++ b/enforcer-rules/src/site/apt/noSnapshots.apt.vm
@@ -47,7 +47,7 @@ Require Release Dependencies
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0</version>
+        <version>${project.version}</version>
         <executions>
           <execution>
             <id>enforce-no-snapshots</id>
diff --git a/enforcer-rules/src/site/apt/requireFilesDontExist.apt b/enforcer-rules/src/site/apt/requireFilesDontExist.apt.vm
similarity index 90%
rename from enforcer-rules/src/site/apt/requireFilesDontExist.apt
rename to enforcer-rules/src/site/apt/requireFilesDontExist.apt.vm
index 0169c7b..4172ed4 100644
--- a/enforcer-rules/src/site/apt/requireFilesDontExist.apt
+++ b/enforcer-rules/src/site/apt/requireFilesDontExist.apt.vm
@@ -31,7 +31,9 @@ Require Files Don't Exist
    The following parameters are supported by this rule:
    
    * message - an optional message to the user if the rule fails.
+   
    * files - A list of files to check.
+   
    * allowNulls - If null files should be allowed. If allowed, they will be treated as if they do not exist. Default is false.
    
    []
@@ -47,7 +49,7 @@ Require Files Don't Exist
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0</version>
+        <version>${project.version}</version>
         <executions>
           <execution>
             <id>enforce-dont-exist</id>
@@ -58,8 +60,8 @@ Require Files Don't Exist
               <rules>
                 <requireFilesDontExist>
                   <files>
-                   <file>${project.outputDirectory}/foo.txt</file>
-                   <file>${project.outputDirectory}/foo2.txt</file>
+                   <file>\${project.build.outputDirectory}/foo.txt</file>
+                   <file>\${project.build.outputDirectory}/foo2.txt</file>
                   </files>
                 </requireFilesDontExist>
               </rules>
diff --git a/enforcer-rules/src/site/apt/requireFilesExist.apt b/enforcer-rules/src/site/apt/requireFilesExist.apt.vm
similarity index 90%
rename from enforcer-rules/src/site/apt/requireFilesExist.apt
rename to enforcer-rules/src/site/apt/requireFilesExist.apt.vm
index 314fed8..820ae9d 100644
--- a/enforcer-rules/src/site/apt/requireFilesExist.apt
+++ b/enforcer-rules/src/site/apt/requireFilesExist.apt.vm
@@ -31,7 +31,9 @@ Require Files Exist
    The following parameters are supported by this rule:
    
    * message - an optional message to the user if the rule fails.
+   
    * files - A list of files to check.
+   
    * allowNulls - If null files should be allowed. If allowed, they will be treated as if they do exist. Default is false.
    
    []
@@ -47,7 +49,7 @@ Require Files Exist
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0</version>
+        <version>${project.version}</version>
         <executions>
           <execution>
             <id>enforce-files-exist</id>
@@ -58,8 +60,8 @@ Require Files Exist
               <rules>
                 <requireFilesExist>
                   <files>
-                   <file>${project.outputDirectory}/foo.txt</file>
-                   <file>${project.outputDirectory}/foo2.txt</file>
+                   <file>\${project.build.outputDirectory}/foo.txt</file>
+                   <file>\${project.build.outputDirectory}/foo2.txt</file>
                   </files>
                 </requireFilesExist>
               </rules>
diff --git a/enforcer-rules/src/site/apt/requireFilesSize.apt b/enforcer-rules/src/site/apt/requireFilesSize.apt.vm
similarity index 88%
rename from enforcer-rules/src/site/apt/requireFilesSize.apt
rename to enforcer-rules/src/site/apt/requireFilesSize.apt.vm
index 0719645..f5ff81d 100644
--- a/enforcer-rules/src/site/apt/requireFilesSize.apt
+++ b/enforcer-rules/src/site/apt/requireFilesSize.apt.vm
@@ -31,10 +31,15 @@ Require File Size
    The following parameters are supported by this rule:
    
    * message - an optional message to the user if the rule fails.
+   
    * files - A list of files to check. If this list is empty, the main project artifact will be checked.
+   
    * maxsize - maximum size in bytes for this file
+   
    * minsize - minimum size in bytes for this file
+   
    * allowNulls - If null files should be allowed. If allowed, they will be treated as if they do exist. Default is false.
+   
    []
 
    
@@ -48,7 +53,7 @@ Require File Size
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0</version>
+        <version>${project.version}</version>
         <executions>
           <execution>
             <id>enforce-file-size</id>
@@ -58,11 +63,11 @@ Require File Size
             <configuration>
               <rules>
                 <requireFilesSize>
-                  <maxSize>10000</maxSize>
-                  <minSize>90</minsize>
+                  <maxsize>10000</maxsize>
+                  <minsize>90</minsize>
                   <files>
-                   <file>${project.outputDirectory}/foo.txt</file>
-                   <file>${project.outputDirectory}/foo2.txt</file>
+                   <file>\${project.build.outputDirectory}/foo.txt</file>
+                   <file>\${project.build.outputDirectory}/foo2.txt</file>
                   </files>
                 </requireFilesSize>
               </rules>
diff --git a/enforcer-rules/src/site/apt/requireJavaVersion.apt b/enforcer-rules/src/site/apt/requireJavaVersion.apt.vm
similarity index 98%
rename from enforcer-rules/src/site/apt/requireJavaVersion.apt
rename to enforcer-rules/src/site/apt/requireJavaVersion.apt.vm
index 5817695..edb7618 100644
--- a/enforcer-rules/src/site/apt/requireJavaVersion.apt
+++ b/enforcer-rules/src/site/apt/requireJavaVersion.apt.vm
@@ -69,7 +69,7 @@ OS Info: Arch: x86 Family: windows Name: windows xp Version: 5.1
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0</version>
+        <version>${project.version}</version>
         <executions>
           <execution>
             <id>enforce-java</id>
diff --git a/enforcer-rules/src/site/apt/requireMavenVersion.apt b/enforcer-rules/src/site/apt/requireMavenVersion.apt.vm
similarity index 97%
rename from enforcer-rules/src/site/apt/requireMavenVersion.apt
rename to enforcer-rules/src/site/apt/requireMavenVersion.apt.vm
index c2f4ba1..810b7e8 100644
--- a/enforcer-rules/src/site/apt/requireMavenVersion.apt
+++ b/enforcer-rules/src/site/apt/requireMavenVersion.apt.vm
@@ -45,7 +45,7 @@ Require Maven Version
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0</version>
+        <version>${project.version}</version>
         <executions>
           <execution>
             <id>enforce-maven</id>
diff --git a/enforcer-rules/src/site/apt/requireNoRepositories.apt b/enforcer-rules/src/site/apt/requireNoRepositories.apt.vm
similarity index 98%
rename from enforcer-rules/src/site/apt/requireNoRepositories.apt
rename to enforcer-rules/src/site/apt/requireNoRepositories.apt.vm
index 1a5167e..4734997 100644
--- a/enforcer-rules/src/site/apt/requireNoRepositories.apt
+++ b/enforcer-rules/src/site/apt/requireNoRepositories.apt.vm
@@ -57,7 +57,7 @@ Require No Repositories
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0</version>
+        <version>${project.version}</version>
         <executions>
           <execution>
             <id>enforce-no-repos</id>
diff --git a/enforcer-rules/src/site/apt/requireOS.apt b/enforcer-rules/src/site/apt/requireOS.apt.vm
similarity index 97%
rename from enforcer-rules/src/site/apt/requireOS.apt
rename to enforcer-rules/src/site/apt/requireOS.apt.vm
index 2690be5..38fcd2e 100644
--- a/enforcer-rules/src/site/apt/requireOS.apt
+++ b/enforcer-rules/src/site/apt/requireOS.apt.vm
@@ -114,7 +114,7 @@ OS Info: Arch: x86 Family: windows Name: windows xp Version: 5.1
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0</version>
+        <version>${project.version}</version>
         <executions>
           <execution>
             <id>enforce-os</id>
@@ -125,7 +125,7 @@ OS Info: Arch: x86 Family: windows Name: windows xp Version: 5.1
               <rules>
                 <requireOS>
                   <name>Windows XP</name>
-                  <family>Windows</family>
+                  <family>windows</family>
                   <arch>x86</arch>
                   <version>5.1.2600</version>
                 </requireOS>
@@ -140,4 +140,4 @@ OS Info: Arch: x86 Family: windows Name: windows xp Version: 5.1
   [...]
 </project>
 +---+
-  
\ No newline at end of file
+  
diff --git a/enforcer-rules/src/site/apt/requirePluginVersions.apt b/enforcer-rules/src/site/apt/requirePluginVersions.apt.vm
similarity index 93%
rename from enforcer-rules/src/site/apt/requirePluginVersions.apt
rename to enforcer-rules/src/site/apt/requirePluginVersions.apt.vm
index 78e27d9..eee652c 100644
--- a/enforcer-rules/src/site/apt/requirePluginVersions.apt
+++ b/enforcer-rules/src/site/apt/requirePluginVersions.apt.vm
@@ -20,7 +20,7 @@
   ------
   Brian Fox
   ------
-  Novemer 2007
+  November 2009
   ------
 
 Require Plugin Versions
@@ -61,7 +61,7 @@ Require Plugin Versions
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0</version>
+        <version>${project.version}</version>
         <executions>
           <execution>
             <id>enforce-plugin-versions</id>
@@ -80,8 +80,8 @@ Require Plugin Versions
                      <additionalPlugin>org.apache.maven.plugins:maven-eclipse-plugin</additionalPlugin>
                      <additionalPlugin>org.apache.maven.plugins:maven-reactor-plugin</additionalPlugin>
                    </additionalPlugins>
+                   <unCheckedPluginsList>org.apache.maven.plugins:maven-enforcer-plugin,org.apache.maven.plugins:maven-idea-plugin</unCheckedPluginsList>
                 </requirePluginVersions>
-                <unCheckedPluginsList>org.apache.maven.plugins:maven-enforcer-plugin,org.apache.maven.plugins:maven-idea-plugin</unCheckedPluginsList>
               </rules>
             </configuration>
           </execution>
diff --git a/enforcer-rules/src/site/apt/requireProperty.apt b/enforcer-rules/src/site/apt/requireProperty.apt.vm
similarity index 78%
rename from enforcer-rules/src/site/apt/requireProperty.apt
rename to enforcer-rules/src/site/apt/requireProperty.apt.vm
index a9d17c3..ff1146e 100644
--- a/enforcer-rules/src/site/apt/requireProperty.apt
+++ b/enforcer-rules/src/site/apt/requireProperty.apt.vm
@@ -50,7 +50,7 @@ Require Property
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0</version>
+        <version>${project.version}</version>
         <executions>
           <execution>
             <id>enforce-property</id>
@@ -61,9 +61,15 @@ Require Property
               <rules>
                 <requireProperty>
                   <property>basedir</property>
-                  <message>"You must have a basedir!"</message>
-                  <regex>"\d"</regex>
-                  <regexMessage>"You must have a digit in your baseDir!"</regexMessage>
+                  <message>You must have a basedir!</message>
+                  <regex>\d</regex>
+                  <regexMessage>You must have a digit in your baseDir!</regexMessage>
+                </requireProperty>
+                <requireProperty>
+                  <property>project.version</property>
+                  <message>"Project version must be specified."</message>
+                  <regex>(\d|-SNAPSHOT)$</regex>
+                  <regexMessage>"Project version must end in a number or -SNAPSHOT."</regexMessage>
                 </requireProperty>
               </rules>
               <fail>true</fail>
diff --git a/enforcer-rules/src/site/apt/requireReleaseDeps.apt b/enforcer-rules/src/site/apt/requireReleaseDeps.apt
deleted file mode 100644
index 40a8441..0000000
--- a/enforcer-rules/src/site/apt/requireReleaseDeps.apt
+++ /dev/null
@@ -1,77 +0,0 @@
-~~ 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 Release Dependencies
-  ------
-  Brian Fox
-  ------
-  Auguest 2008
-  ------
-
-Require Release Dependencies
-
-  This rule checks the dependencies and fails if any snapshots are found.
-
-
-   The following parameters are supported by this rule:
-   
-   * searchTransitive - if transitive dependencies should be checked. Default: true
-   
-   * message - an optional message to the user if the rule fails.
-   
-   * onlyWhenRelease - if this rule should only be executed when the version is a non-SNAPSHOT version. Default: false
-   
-   * failWhenParentIsSnapshot - if the parent should be checked. Default: true 
-
-   []
-
-   
-  Sample Plugin Configuration:
-  
-+---+
-<project>
-  [...]
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0</version>
-        <executions>
-          <execution>
-            <id>enforce-no-snapshots</id>
-            <goals>
-              <goal>enforce</goal>
-            </goals>
-            <configuration>
-              <rules>
-                <requireReleaseDeps>
-                  <message>No Snapshots Allowed!</message>
-                </requireReleaseDeps>
-              </rules>
-              <fail>true</fail>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-  [...]
-</project>
-+---+
-
diff --git a/enforcer-rules/src/site/apt/requireReleaseDeps.apt.vm b/enforcer-rules/src/site/apt/requireReleaseDeps.apt.vm
new file mode 100644
index 0000000..83cf07b
--- /dev/null
+++ b/enforcer-rules/src/site/apt/requireReleaseDeps.apt.vm
@@ -0,0 +1,119 @@
+~~ 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 Release Dependencies
+  ------
+  Brian Fox
+  ------
+  Auguest 2008
+  ------
+
+Require Release Dependencies
+
+  This rule checks the dependencies and fails if any snapshots are found.
+
+
+   The following parameters are supported by this rule:
+   
+   * searchTransitive - if transitive dependencies should be checked. Default: true
+   
+   * message - an optional message to the user if the rule fails.
+   
+   * onlyWhenRelease - if this rule should only be executed when the version is a non-SNAPSHOT version. Default: false
+   
+   * failWhenParentIsSnapshot - if the parent should be checked. Default: true 
+   
+   * includes - List of dependency patterns to include when checking for snapshot versions
+   
+   * excludes - List of dependency patterns to exclude when checking for snapshot versions
+
+   []
+
+   
+  Sample Plugin Configuration:
+  
++---+
+<project>
+  [...]
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>${project.version}</version>
+        <executions>
+          <execution>
+            <id>enforce-no-snapshots</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireReleaseDeps>
+                  <message>No Snapshots Allowed!</message>
+                </requireReleaseDeps>
+              </rules>
+              <fail>true</fail>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  [...]
+</project>
++---+
+
+  Includes/Excludes Plugin Configuration:
+  
++---+
+<project>
+  [...]
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>${project.version}</version>
+        <executions>
+          <execution>
+            <id>enforce-no-snapshots</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireReleaseDeps>
+                  <message>No Snapshots Allowed!</message>
+                  <excludes>
+                    <exclude>org.apache.maven:maven-core</exclude>
+                    <exclude>org.apache.maven.plugins:*</exclude>
+                  </excludes>
+                </requireReleaseDeps>
+              </rules>
+              <fail>true</fail>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  [...]
+</project>
++---+
+
diff --git a/enforcer-rules/src/site/apt/requireReleaseVersion.apt b/enforcer-rules/src/site/apt/requireReleaseVersion.apt.vm
similarity index 92%
rename from enforcer-rules/src/site/apt/requireReleaseVersion.apt
rename to enforcer-rules/src/site/apt/requireReleaseVersion.apt.vm
index 4fd7d27..738e4b0 100644
--- a/enforcer-rules/src/site/apt/requireReleaseVersion.apt
+++ b/enforcer-rules/src/site/apt/requireReleaseVersion.apt.vm
@@ -31,9 +31,7 @@ Require Release Version
    The following parameters are supported by this rule:
    
    * message - an optional message to the user if the rule fails.
-   
-   * onlyWhenRelease - if this rule should only be executed when the version is a non-SNAPSHOT version. Default: false
-   
+    
    * failWhenParentIsSnapshot - if the parent should be checked. Default: true 
 
    []
@@ -49,7 +47,7 @@ Require Release Version
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
-        <version>1.0</version>
+        <version>${project.version}</version>
         <executions>
           <execution>
             <id>enforce-no-snapshots</id>
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java
index 7131036..929ac28 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.util.Date;
 import java.util.Properties;
@@ -32,14 +33,14 @@ import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator
 // TODO: Auto-generated Javadoc
 /**
  * The Class EnforcerTestUtils.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public final class EnforcerTestUtils
 {
     /**
      * Gets the maven session.
-     * 
+     *
      * @return the maven session
      */
     public static MavenSession getMavenSession()
@@ -50,7 +51,7 @@ public final class EnforcerTestUtils
 
     /**
      * Gets the helper.
-     * 
+     *
      * @return the helper
      */
     public static EnforcerRuleHelper getHelper()
@@ -60,7 +61,7 @@ public final class EnforcerTestUtils
 
     /**
      * Gets the helper.
-     * 
+     *
      * @param mockExpression the mock expression
      * @return the helper
      */
@@ -71,7 +72,7 @@ public final class EnforcerTestUtils
 
     /**
      * Gets the helper.
-     * 
+     *
      * @param project the project
      * @return the helper
      */
@@ -82,7 +83,7 @@ public final class EnforcerTestUtils
 
     /**
      * Gets the helper.
-     * 
+     *
      * @param project the project
      * @param mockExpression the mock expression
      * @return the helper
@@ -104,7 +105,7 @@ public final class EnforcerTestUtils
 
     /**
      * Gets the helper.
-     * 
+     *
      * @param project the project
      * @param eval the expression evaluator to use
      * @return the helper
@@ -117,7 +118,7 @@ public final class EnforcerTestUtils
 
     /**
      * New plugin.
-     * 
+     *
      * @param groupId the group id
      * @param artifactId the artifact id
      * @param version the version
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockPathTranslator.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockPathTranslator.java
index e92efb8..649473a 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockPathTranslator.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockPathTranslator.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.io.File;
 
@@ -26,7 +27,7 @@ import org.apache.maven.project.path.PathTranslator;
 // TODO: Auto-generated Javadoc
 /**
  * The Class MockPathTranslator.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class MockPathTranslator
@@ -35,7 +36,7 @@ public class MockPathTranslator
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.path.PathTranslator#alignToBaseDirectory(org.apache.maven.model.Model,
      *      java.io.File)
      */
@@ -45,7 +46,7 @@ public class MockPathTranslator
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.path.PathTranslator#alignToBaseDirectory(java.lang.String, java.io.File)
      */
     public String alignToBaseDirectory( String thePath, File theBasedir )
@@ -55,7 +56,7 @@ public class MockPathTranslator
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.path.PathTranslator#unalignFromBaseDirectory(org.apache.maven.model.Model,
      *      java.io.File)
      */
@@ -65,7 +66,7 @@ public class MockPathTranslator
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.path.PathTranslator#unalignFromBaseDirectory(java.lang.String, java.io.File)
      */
     public String unalignFromBaseDirectory( String theDirectory, File theBasedir )
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockPlexusContainer.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockPlexusContainer.java
index a5de70d..50c087e 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockPlexusContainer.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockPlexusContainer.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.io.File;
 import java.io.Reader;
@@ -45,7 +46,7 @@ import org.codehaus.plexus.logging.LoggerManager;
 // TODO: Auto-generated Javadoc
 /**
  * The Class MockPlexusContainer.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class MockPlexusContainer
@@ -54,7 +55,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#lookup(java.lang.String)
      */
     public Object lookup( String theComponentKey )
@@ -74,7 +75,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#addComponentDescriptor(org.codehaus.plexus.component.repository.ComponentDescriptor)
      */
     public void addComponentDescriptor( ComponentDescriptor theComponentDescriptor )
@@ -86,7 +87,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#addContextValue(java.lang.Object, java.lang.Object)
      */
     public void addContextValue( Object theKey, Object theValue )
@@ -97,7 +98,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#addJarRepository(java.io.File)
      */
     public void addJarRepository( File theRepository )
@@ -108,7 +109,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#addJarResource(java.io.File)
      */
     public void addJarResource( File theResource )
@@ -120,7 +121,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#composeComponent(java.lang.Object,
      *      org.codehaus.plexus.component.repository.ComponentDescriptor)
      */
@@ -133,7 +134,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#createChildContainer(java.lang.String, java.util.List, java.util.Map)
      */
     public PlexusContainer createChildContainer( String theName, List theClasspathJars, Map theContext )
@@ -145,7 +146,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#createChildContainer(java.lang.String, java.util.List, java.util.Map,
      *      java.util.List)
      */
@@ -159,7 +160,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#createComponentInstance(org.codehaus.plexus.component.repository.ComponentDescriptor)
      */
     public Object createComponentInstance( ComponentDescriptor theComponentDescriptor )
@@ -171,7 +172,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#dispose()
      */
     public void dispose()
@@ -182,7 +183,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#getChildContainer(java.lang.String)
      */
     public PlexusContainer getChildContainer( String theName )
@@ -193,7 +194,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#getComponentDescriptor(java.lang.String)
      */
     public ComponentDescriptor getComponentDescriptor( String theComponentKey )
@@ -204,7 +205,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#getComponentDescriptorList(java.lang.String)
      */
     public List getComponentDescriptorList( String theRole )
@@ -215,7 +216,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#getComponentDescriptorMap(java.lang.String)
      */
     public Map getComponentDescriptorMap( String theRole )
@@ -226,7 +227,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#getComponentRealm(java.lang.String)
      */
     public ClassRealm getComponentRealm( String theComponentKey )
@@ -237,7 +238,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#getContainerRealm()
      */
     public ClassRealm getContainerRealm()
@@ -248,7 +249,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#getContext()
      */
     public Context getContext()
@@ -259,7 +260,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#getCreationDate()
      */
     public Date getCreationDate()
@@ -270,7 +271,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#getLogger()
      */
     public Logger getLogger()
@@ -281,7 +282,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#getLoggerManager()
      */
     public LoggerManager getLoggerManager()
@@ -292,7 +293,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#hasChildContainer(java.lang.String)
      */
     public boolean hasChildContainer( String theName )
@@ -303,7 +304,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#hasComponent(java.lang.String)
      */
     public boolean hasComponent( String theComponentKey )
@@ -314,7 +315,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#hasComponent(java.lang.String, java.lang.String)
      */
     public boolean hasComponent( String theRole, String theRoleHint )
@@ -325,7 +326,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#initialize()
      */
     public void initialize()
@@ -337,7 +338,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#isInitialized()
      */
     public boolean isInitialized()
@@ -348,7 +349,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#isStarted()
      */
     public boolean isStarted()
@@ -359,7 +360,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#lookup(java.lang.String, java.lang.String)
      */
     public Object lookup( String theRole, String theRoleHint )
@@ -371,7 +372,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#lookupList(java.lang.String)
      */
     public List lookupList( String theRole )
@@ -383,7 +384,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#lookupMap(java.lang.String)
      */
     public Map lookupMap( String theRole )
@@ -395,7 +396,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#registerComponentDiscoveryListener(org.codehaus.plexus.component.discovery.ComponentDiscoveryListener)
      */
     public void registerComponentDiscoveryListener( ComponentDiscoveryListener theListener )
@@ -406,7 +407,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#release(java.lang.Object)
      */
     public void release( Object theComponent )
@@ -418,7 +419,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#releaseAll(java.util.Map)
      */
     public void releaseAll( Map theComponents )
@@ -430,7 +431,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#releaseAll(java.util.List)
      */
     public void releaseAll( List theComponents )
@@ -442,7 +443,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#removeChildContainer(java.lang.String)
      */
     public void removeChildContainer( String theName )
@@ -453,7 +454,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#removeComponentDiscoveryListener(org.codehaus.plexus.component.discovery.ComponentDiscoveryListener)
      */
     public void removeComponentDiscoveryListener( ComponentDiscoveryListener theListener )
@@ -464,7 +465,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#resume(java.lang.Object)
      */
     public void resume( Object theComponent )
@@ -476,7 +477,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#setConfigurationResource(java.io.Reader)
      */
     public void setConfigurationResource( Reader theConfiguration )
@@ -488,7 +489,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#setLoggerManager(org.codehaus.plexus.logging.LoggerManager)
      */
     public void setLoggerManager( LoggerManager theLoggerManager )
@@ -499,7 +500,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#setParentPlexusContainer(org.codehaus.plexus.PlexusContainer)
      */
     public void setParentPlexusContainer( PlexusContainer theParentContainer )
@@ -510,7 +511,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#start()
      */
     public void start()
@@ -522,7 +523,7 @@ public class MockPlexusContainer
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.codehaus.plexus.PlexusContainer#suspend(java.lang.Object)
      */
     public void suspend( Object theComponent )
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockProject.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockProject.java
index 93585f1..0bbbe88 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockProject.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockProject.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.io.File;
 import java.io.IOException;
@@ -54,7 +55,6 @@ import org.apache.maven.project.artifact.InvalidDependencyVersionException;
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 
-// TODO: Auto-generated Javadoc
 /**
  * very simple stub of maven project, going to take a lot of work to make it useful as a stub though.
  */
@@ -209,7 +209,7 @@ public class MockProject
     // kinda dangerous...
     /**
      * Instantiates a new mock project.
-     * 
+     *
      * @param model the model
      */
     public MockProject( Model model )
@@ -221,7 +221,7 @@ public class MockProject
     // kinda dangerous...
     /**
      * Instantiates a new mock project.
-     * 
+     *
      * @param project the project
      */
     public MockProject( MavenProject project )
@@ -232,7 +232,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getModulePathAdjustment(org.apache.maven.project.MavenProject)
      */
     public String getModulePathAdjustment( MavenProject mavenProject )
@@ -243,7 +243,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getArtifact()
      */
     public Artifact getArtifact()
@@ -253,7 +253,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setArtifact(org.apache.maven.artifact.Artifact)
      */
     public void setArtifact( Artifact artifact )
@@ -263,7 +263,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getModel()
      */
     public Model getModel()
@@ -273,7 +273,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getParent()
      */
     public MavenProject getParent()
@@ -283,7 +283,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setParent(org.apache.maven.project.MavenProject)
      */
     public void setParent( MavenProject mavenProject )
@@ -293,7 +293,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setRemoteArtifactRepositories(java.util.List)
      */
     public void setRemoteArtifactRepositories( List list )
@@ -303,7 +303,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getRemoteArtifactRepositories()
      */
     public List getRemoteArtifactRepositories()
@@ -313,7 +313,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#hasParent()
      */
     public boolean hasParent()
@@ -330,7 +330,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getFile()
      */
     public File getFile()
@@ -340,7 +340,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setFile(java.io.File)
      */
     public void setFile( File file )
@@ -350,7 +350,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getBasedir()
      */
     public File getBasedir()
@@ -364,7 +364,7 @@ public class MockProject
 
     /**
      * Sets the base dir.
-     * 
+     *
      * @param base the new base dir
      */
     public void setBaseDir( File base )
@@ -374,7 +374,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setDependencies(java.util.List)
      */
     public void setDependencies( List list )
@@ -384,7 +384,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getDependencies()
      */
     public List getDependencies()
@@ -398,7 +398,7 @@ public class MockProject
 
     /**
      * Sets the dependency management.
-     * 
+     *
      * @param depMgt the new dependency management
      */
     public void setDependencyManagement( DependencyManagement depMgt )
@@ -408,7 +408,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getDependencyManagement()
      */
     public DependencyManagement getDependencyManagement()
@@ -423,7 +423,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#addCompileSourceRoot(java.lang.String)
      */
     public void addCompileSourceRoot( String string )
@@ -440,7 +440,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#addScriptSourceRoot(java.lang.String)
      */
     public void addScriptSourceRoot( String string )
@@ -457,7 +457,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#addTestCompileSourceRoot(java.lang.String)
      */
     public void addTestCompileSourceRoot( String string )
@@ -474,7 +474,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getCompileSourceRoots()
      */
     public List getCompileSourceRoots()
@@ -484,7 +484,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getScriptSourceRoots()
      */
     public List getScriptSourceRoots()
@@ -494,7 +494,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getTestCompileSourceRoots()
      */
     public List getTestCompileSourceRoots()
@@ -504,7 +504,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getCompileClasspathElements()
      */
     public List getCompileClasspathElements()
@@ -515,7 +515,7 @@ public class MockProject
 
     /**
      * Sets the compile artifacts.
-     * 
+     *
      * @param compileArtifacts the new compile artifacts
      */
     public void setCompileArtifacts( List compileArtifacts )
@@ -525,7 +525,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getCompileArtifacts()
      */
     public List getCompileArtifacts()
@@ -535,7 +535,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getCompileDependencies()
      */
     public List getCompileDependencies()
@@ -545,7 +545,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getTestClasspathElements()
      */
     public List getTestClasspathElements()
@@ -556,7 +556,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getTestArtifacts()
      */
     public List getTestArtifacts()
@@ -566,7 +566,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getTestDependencies()
      */
     public List getTestDependencies()
@@ -576,7 +576,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getRuntimeClasspathElements()
      */
     public List getRuntimeClasspathElements()
@@ -587,7 +587,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getRuntimeArtifacts()
      */
     public List getRuntimeArtifacts()
@@ -597,7 +597,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getRuntimeDependencies()
      */
     public List getRuntimeDependencies()
@@ -607,7 +607,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getSystemClasspathElements()
      */
     public List getSystemClasspathElements()
@@ -618,7 +618,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getSystemArtifacts()
      */
     public List getSystemArtifacts()
@@ -628,7 +628,7 @@ public class MockProject
 
     /**
      * Sets the runtime classpath elements.
-     * 
+     *
      * @param runtimeClasspathElements the new runtime classpath elements
      */
     public void setRuntimeClasspathElements( List runtimeClasspathElements )
@@ -638,7 +638,7 @@ public class MockProject
 
     /**
      * Sets the attached artifacts.
-     * 
+     *
      * @param attachedArtifacts the new attached artifacts
      */
     public void setAttachedArtifacts( List attachedArtifacts )
@@ -648,7 +648,7 @@ public class MockProject
 
     /**
      * Sets the compile source roots.
-     * 
+     *
      * @param compileSourceRoots the new compile source roots
      */
     public void setCompileSourceRoots( List compileSourceRoots )
@@ -658,7 +658,7 @@ public class MockProject
 
     /**
      * Sets the test compile source roots.
-     * 
+     *
      * @param testCompileSourceRoots the new test compile source roots
      */
     public void setTestCompileSourceRoots( List testCompileSourceRoots )
@@ -668,7 +668,7 @@ public class MockProject
 
     /**
      * Sets the script source roots.
-     * 
+     *
      * @param scriptSourceRoots the new script source roots
      */
     public void setScriptSourceRoots( List scriptSourceRoots )
@@ -678,7 +678,7 @@ public class MockProject
 
     /**
      * Sets the artifact map.
-     * 
+     *
      * @param artifactMap the new artifact map
      */
     public void setArtifactMap( Map artifactMap )
@@ -688,7 +688,7 @@ public class MockProject
 
     /**
      * Sets the plugin artifact map.
-     * 
+     *
      * @param pluginArtifactMap the new plugin artifact map
      */
     public void setPluginArtifactMap( Map pluginArtifactMap )
@@ -698,7 +698,7 @@ public class MockProject
 
     /**
      * Sets the report artifact map.
-     * 
+     *
      * @param reportArtifactMap the new report artifact map
      */
     public void setReportArtifactMap( Map reportArtifactMap )
@@ -708,7 +708,7 @@ public class MockProject
 
     /**
      * Sets the extension artifact map.
-     * 
+     *
      * @param extensionArtifactMap the new extension artifact map
      */
     public void setExtensionArtifactMap( Map extensionArtifactMap )
@@ -718,7 +718,7 @@ public class MockProject
 
     /**
      * Sets the project references.
-     * 
+     *
      * @param projectReferences the new project references
      */
     public void setProjectReferences( Map projectReferences )
@@ -728,7 +728,7 @@ public class MockProject
 
     /**
      * Sets the builds the overlay.
-     * 
+     *
      * @param buildOverlay the new builds the overlay
      */
     public void setBuildOverlay( Build buildOverlay )
@@ -738,7 +738,7 @@ public class MockProject
 
     /**
      * Sets the compile dependencies.
-     * 
+     *
      * @param compileDependencies the new compile dependencies
      */
     public void setCompileDependencies( List compileDependencies )
@@ -748,7 +748,7 @@ public class MockProject
 
     /**
      * Sets the system dependencies.
-     * 
+     *
      * @param systemDependencies the new system dependencies
      */
     public void setSystemDependencies( List systemDependencies )
@@ -758,7 +758,7 @@ public class MockProject
 
     /**
      * Sets the test classpath elements.
-     * 
+     *
      * @param testClasspathElements the new test classpath elements
      */
     public void setTestClasspathElements( List testClasspathElements )
@@ -768,7 +768,7 @@ public class MockProject
 
     /**
      * Sets the test dependencies.
-     * 
+     *
      * @param testDependencies the new test dependencies
      */
     public void setTestDependencies( List testDependencies )
@@ -778,7 +778,7 @@ public class MockProject
 
     /**
      * Sets the system classpath elements.
-     * 
+     *
      * @param systemClasspathElements the new system classpath elements
      */
     public void setSystemClasspathElements( List systemClasspathElements )
@@ -788,7 +788,7 @@ public class MockProject
 
     /**
      * Sets the system artifacts.
-     * 
+     *
      * @param systemArtifacts the new system artifacts
      */
     public void setSystemArtifacts( List systemArtifacts )
@@ -798,7 +798,7 @@ public class MockProject
 
     /**
      * Sets the test artifacts.
-     * 
+     *
      * @param testArtifacts the new test artifacts
      */
     public void setTestArtifacts( List testArtifacts )
@@ -808,7 +808,7 @@ public class MockProject
 
     /**
      * Sets the runtime artifacts.
-     * 
+     *
      * @param runtimeArtifacts the new runtime artifacts
      */
     public void setRuntimeArtifacts( List runtimeArtifacts )
@@ -818,7 +818,7 @@ public class MockProject
 
     /**
      * Sets the runtime dependencies.
-     * 
+     *
      * @param runtimeDependencies the new runtime dependencies
      */
     public void setRuntimeDependencies( List runtimeDependencies )
@@ -828,7 +828,7 @@ public class MockProject
 
     /**
      * Sets the model.
-     * 
+     *
      * @param model the new model
      */
     public void setModel( Model model )
@@ -838,7 +838,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getSystemDependencies()
      */
     public List getSystemDependencies()
@@ -848,7 +848,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setModelVersion(java.lang.String)
      */
     public void setModelVersion( String string )
@@ -858,7 +858,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getModelVersion()
      */
     public String getModelVersion()
@@ -868,7 +868,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getId()
      */
     public String getId()
@@ -878,7 +878,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setGroupId(java.lang.String)
      */
     public void setGroupId( String string )
@@ -888,7 +888,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getGroupId()
      */
     public String getGroupId()
@@ -898,7 +898,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setArtifactId(java.lang.String)
      */
     public void setArtifactId( String string )
@@ -908,7 +908,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getArtifactId()
      */
     public String getArtifactId()
@@ -918,7 +918,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setName(java.lang.String)
      */
     public void setName( String string )
@@ -928,7 +928,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getName()
      */
     public String getName()
@@ -938,7 +938,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setVersion(java.lang.String)
      */
     public void setVersion( String string )
@@ -948,7 +948,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getVersion()
      */
     public String getVersion()
@@ -958,7 +958,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getPackaging()
      */
     public String getPackaging()
@@ -968,7 +968,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setPackaging(java.lang.String)
      */
     public void setPackaging( String string )
@@ -978,7 +978,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setInceptionYear(java.lang.String)
      */
     public void setInceptionYear( String string )
@@ -988,7 +988,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getInceptionYear()
      */
     public String getInceptionYear()
@@ -998,7 +998,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setUrl(java.lang.String)
      */
     public void setUrl( String string )
@@ -1008,7 +1008,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getUrl()
      */
     public String getUrl()
@@ -1018,7 +1018,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getPrerequisites()
      */
     public Prerequisites getPrerequisites()
@@ -1028,7 +1028,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setIssueManagement(org.apache.maven.model.IssueManagement)
      */
     public void setIssueManagement( IssueManagement issueManagement )
@@ -1038,7 +1038,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getCiManagement()
      */
     public CiManagement getCiManagement()
@@ -1048,7 +1048,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setCiManagement(org.apache.maven.model.CiManagement)
      */
     public void setCiManagement( CiManagement ciManagement )
@@ -1058,7 +1058,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getIssueManagement()
      */
     public IssueManagement getIssueManagement()
@@ -1068,7 +1068,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setDistributionManagement(org.apache.maven.model.DistributionManagement)
      */
     public void setDistributionManagement( DistributionManagement distributionManagement )
@@ -1078,7 +1078,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getDistributionManagement()
      */
     public DistributionManagement getDistributionManagement()
@@ -1088,7 +1088,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setDescription(java.lang.String)
      */
     public void setDescription( String string )
@@ -1098,7 +1098,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getDescription()
      */
     public String getDescription()
@@ -1108,7 +1108,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setOrganization(org.apache.maven.model.Organization)
      */
     public void setOrganization( Organization organization )
@@ -1118,7 +1118,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getOrganization()
      */
     public Organization getOrganization()
@@ -1128,7 +1128,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setScm(org.apache.maven.model.Scm)
      */
     public void setScm( Scm scm )
@@ -1138,7 +1138,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getScm()
      */
     public Scm getScm()
@@ -1148,7 +1148,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setMailingLists(java.util.List)
      */
     public void setMailingLists( List list )
@@ -1158,7 +1158,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getMailingLists()
      */
     public List getMailingLists()
@@ -1168,7 +1168,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#addMailingList(org.apache.maven.model.MailingList)
      */
     public void addMailingList( MailingList mailingList )
@@ -1178,7 +1178,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setDevelopers(java.util.List)
      */
     public void setDevelopers( List list )
@@ -1188,7 +1188,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getDevelopers()
      */
     public List getDevelopers()
@@ -1198,7 +1198,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#addDeveloper(org.apache.maven.model.Developer)
      */
     public void addDeveloper( Developer developer )
@@ -1208,7 +1208,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setContributors(java.util.List)
      */
     public void setContributors( List list )
@@ -1218,7 +1218,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getContributors()
      */
     public List getContributors()
@@ -1228,7 +1228,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#addContributor(org.apache.maven.model.Contributor)
      */
     public void addContributor( Contributor contributor )
@@ -1238,7 +1238,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setBuild(org.apache.maven.model.Build)
      */
     public void setBuild( Build build )
@@ -1248,7 +1248,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getBuild()
      */
     public Build getBuild()
@@ -1258,7 +1258,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getResources()
      */
     public List getResources()
@@ -1268,7 +1268,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getTestResources()
      */
     public List getTestResources()
@@ -1278,7 +1278,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#addResource(org.apache.maven.model.Resource)
      */
     public void addResource( Resource resource )
@@ -1288,7 +1288,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#addTestResource(org.apache.maven.model.Resource)
      */
     public void addTestResource( Resource resource )
@@ -1298,7 +1298,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setReporting(org.apache.maven.model.Reporting)
      */
     public void setReporting( Reporting reporting )
@@ -1308,7 +1308,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getReporting()
      */
     public Reporting getReporting()
@@ -1318,7 +1318,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setLicenses(java.util.List)
      */
     public void setLicenses( List list )
@@ -1328,7 +1328,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getLicenses()
      */
     public List getLicenses()
@@ -1338,7 +1338,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#addLicense(org.apache.maven.model.License)
      */
     public void addLicense( License license )
@@ -1348,7 +1348,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setArtifacts(java.util.Set)
      */
     public void setArtifacts( Set set )
@@ -1358,7 +1358,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getArtifacts()
      */
     public Set getArtifacts()
@@ -1375,7 +1375,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getArtifactMap()
      */
     public Map getArtifactMap()
@@ -1385,7 +1385,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setPluginArtifacts(java.util.Set)
      */
     public void setPluginArtifacts( Set set )
@@ -1395,7 +1395,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getPluginArtifacts()
      */
     public Set getPluginArtifacts()
@@ -1405,7 +1405,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getPluginArtifactMap()
      */
     public Map getPluginArtifactMap()
@@ -1415,7 +1415,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setReportArtifacts(java.util.Set)
      */
     public void setReportArtifacts( Set set )
@@ -1425,7 +1425,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getReportArtifacts()
      */
     public Set getReportArtifacts()
@@ -1435,7 +1435,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getReportArtifactMap()
      */
     public Map getReportArtifactMap()
@@ -1445,7 +1445,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setExtensionArtifacts(java.util.Set)
      */
     public void setExtensionArtifacts( Set set )
@@ -1455,7 +1455,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getExtensionArtifacts()
      */
     public Set getExtensionArtifacts()
@@ -1465,7 +1465,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getExtensionArtifactMap()
      */
     public Map getExtensionArtifactMap()
@@ -1475,7 +1475,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setParentArtifact(org.apache.maven.artifact.Artifact)
      */
     public void setParentArtifact( Artifact artifact )
@@ -1485,23 +1485,23 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getParentArtifact()
      */
     public Artifact getParentArtifact()
     {
         if (parent !=null)
         {
-            return parent.getArtifact();    
+            return parent.getArtifact();
         }
         else
             return null;
-        
+
     }
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getRepositories()
      */
     public List getRepositories()
@@ -1511,7 +1511,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getReportPlugins()
      */
     public List getReportPlugins()
@@ -1521,7 +1521,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getBuildPlugins()
      */
     public List getBuildPlugins()
@@ -1531,7 +1531,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getModules()
      */
     public List getModules()
@@ -1541,7 +1541,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getPluginManagement()
      */
     public PluginManagement getPluginManagement()
@@ -1551,7 +1551,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#addPlugin(org.apache.maven.model.Plugin)
      */
     public void addPlugin( Plugin plugin )
@@ -1561,7 +1561,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#injectPluginManagementInfo(org.apache.maven.model.Plugin)
      */
     public void injectPluginManagementInfo( Plugin plugin )
@@ -1571,7 +1571,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getCollectedProjects()
      */
     public List getCollectedProjects()
@@ -1581,7 +1581,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setCollectedProjects(java.util.List)
      */
     public void setCollectedProjects( List list )
@@ -1591,7 +1591,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setPluginArtifactRepositories(java.util.List)
      */
     public void setPluginArtifactRepositories( List list )
@@ -1601,7 +1601,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getPluginArtifactRepositories()
      */
     public List getPluginArtifactRepositories()
@@ -1611,7 +1611,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getDistributionManagementArtifactRepository()
      */
     public ArtifactRepository getDistributionManagementArtifactRepository()
@@ -1621,7 +1621,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getPluginRepositories()
      */
     public List getPluginRepositories()
@@ -1631,7 +1631,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setActiveProfiles(java.util.List)
      */
     public void setActiveProfiles( List list )
@@ -1641,7 +1641,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getActiveProfiles()
      */
     public List getActiveProfiles()
@@ -1651,7 +1651,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#addAttachedArtifact(org.apache.maven.artifact.Artifact)
      */
     public void addAttachedArtifact( Artifact theArtifact )
@@ -1668,7 +1668,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getAttachedArtifacts()
      */
     public List getAttachedArtifacts()
@@ -1678,7 +1678,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getGoalConfiguration(java.lang.String, java.lang.String,
      *      java.lang.String, java.lang.String)
      */
@@ -1689,7 +1689,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getReportConfiguration(java.lang.String, java.lang.String,
      *      java.lang.String)
      */
@@ -1700,7 +1700,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getExecutionProject()
      */
     public MavenProject getExecutionProject()
@@ -1710,7 +1710,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setExecutionProject(org.apache.maven.project.MavenProject)
      */
     public void setExecutionProject( MavenProject mavenProject )
@@ -1720,7 +1720,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#writeModel(java.io.Writer)
      */
     public void writeModel( Writer writer )
@@ -1731,7 +1731,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#writeOriginalModel(java.io.Writer)
      */
     public void writeOriginalModel( Writer writer )
@@ -1742,7 +1742,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getDependencyArtifacts()
      */
     public Set getDependencyArtifacts()
@@ -1752,7 +1752,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setDependencyArtifacts(java.util.Set)
      */
     public void setDependencyArtifacts( Set set )
@@ -1762,7 +1762,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setReleaseArtifactRepository(org.apache.maven.artifact.repository.ArtifactRepository)
      */
     public void setReleaseArtifactRepository( ArtifactRepository artifactRepository )
@@ -1772,7 +1772,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setSnapshotArtifactRepository(org.apache.maven.artifact.repository.ArtifactRepository)
      */
     public void setSnapshotArtifactRepository( ArtifactRepository artifactRepository )
@@ -1782,7 +1782,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setOriginalModel(org.apache.maven.model.Model)
      */
     public void setOriginalModel( Model model )
@@ -1792,7 +1792,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getOriginalModel()
      */
     public Model getOriginalModel()
@@ -1802,7 +1802,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getBuildExtensions()
      */
     public List getBuildExtensions()
@@ -1812,7 +1812,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#createArtifacts(org.apache.maven.artifact.factory.ArtifactFactory,
      *      java.lang.String, org.apache.maven.artifact.resolver.filter.ArtifactFilter)
      */
@@ -1824,7 +1824,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#addProjectReference(org.apache.maven.project.MavenProject)
      */
     public void addProjectReference( MavenProject mavenProject )
@@ -1834,7 +1834,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#attachArtifact(java.lang.String, java.lang.String, java.io.File)
      */
     public void attachArtifact( String string, String string1, File theFile )
@@ -1844,7 +1844,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getProperties()
      */
     public Properties getProperties()
@@ -1854,7 +1854,7 @@ public class MockProject
 
     /**
      * Sets the property.
-     * 
+     *
      * @param key the key
      * @param value the value
      */
@@ -1865,7 +1865,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getFilters()
      */
     public List getFilters()
@@ -1875,7 +1875,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getProjectReferences()
      */
     public Map getProjectReferences()
@@ -1885,7 +1885,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#isExecutionRoot()
      */
     public boolean isExecutionRoot()
@@ -1895,7 +1895,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#setExecutionRoot(boolean)
      */
     public void setExecutionRoot( boolean b )
@@ -1905,7 +1905,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#getDefaultGoal()
      */
     public String getDefaultGoal()
@@ -1915,7 +1915,7 @@ public class MockProject
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.project.MavenProject#replaceWithActiveArtifact(org.apache.maven.artifact.Artifact)
      */
     public Artifact replaceWithActiveArtifact( Artifact theArtifact )
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockRuntimeInformation.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockRuntimeInformation.java
index 09d432b..b62dec5 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockRuntimeInformation.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/MockRuntimeInformation.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,16 +18,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
 import org.apache.maven.execution.RuntimeInformation;
 
-// TODO: Auto-generated Javadoc
 /**
  * Just a mock object hard coded to return version 2.0.5
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class MockRuntimeInformation
@@ -34,7 +34,7 @@ public class MockRuntimeInformation
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.execution.RuntimeInformation#getApplicationVersion()
      */
     public ArtifactVersion getApplicationVersion()
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAbstractVersionEnforcer.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAbstractVersionEnforcer.java
index e9babb7..35f5934 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAbstractVersionEnforcer.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAbstractVersionEnforcer.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import junit.framework.TestCase;
 
@@ -31,7 +32,7 @@ import org.apache.maven.plugin.logging.SystemStreamLog;
 // TODO: Auto-generated Javadoc
 /**
  * The Class TestAbstractVersionEnforcer.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class TestAbstractVersionEnforcer
@@ -40,7 +41,7 @@ public class TestAbstractVersionEnforcer
 
     /**
      * Test contains version.
-     * 
+     *
      * @throws InvalidVersionSpecificationException the invalid version specification exception
      */
     public void testContainsVersion()
@@ -83,12 +84,12 @@ public class TestAbstractVersionEnforcer
         version = new DefaultArtifactVersion ("2.1.0-M1-RC12");
         assertTrue( AbstractVersionEnforcer.containsVersion( VersionRange.createFromVersionSpec( "[2.1.0-M1-RC12,)" ), version ) );
         assertFalse( AbstractVersionEnforcer.containsVersion( VersionRange.createFromVersionSpec( "[2.1.0-M1,)" ), version ) );
-        
+
     }
 
     /**
      * Enforce false.
-     * 
+     *
      * @param rule the rule
      * @param log the log
      * @param var the var
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAlwaysFail.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAlwaysFail.java
index 1f36fc9..cf34d33 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAlwaysFail.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAlwaysFail.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import junit.framework.TestCase;
 
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAlwaysPass.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAlwaysPass.java
index 54798d4..60b1cc5 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAlwaysPass.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAlwaysPass.java
@@ -1,5 +1,24 @@
 package org.apache.maven.plugins.enforcer;
 
+/*
+ * 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.
+ */
+
 import junit.framework.TestCase;
 
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestBannedDependencies.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestBannedDependencies.java
index f27ac96..75f3919 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestBannedDependencies.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestBannedDependencies.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -30,7 +31,7 @@ import org.apache.maven.plugin.testing.ArtifactStubFactory;
 // TODO: Auto-generated Javadoc
 /**
  * The Class TestBannedDependencies.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class TestBannedDependencies
@@ -39,7 +40,7 @@ public class TestBannedDependencies
 
     /**
      * Test rule.
-     * 
+     *
      * @throws IOException Signals that an I/O exception has occurred.
      */
     public void testRule()
@@ -130,7 +131,7 @@ public class TestBannedDependencies
 
     /**
      * Test includes.
-     * 
+     *
      * @throws IOException Signals that an I/O exception has occurred.
      */
     public void testIncludes()
@@ -170,7 +171,7 @@ public class TestBannedDependencies
 
     /**
      * Simpler wrapper to execute and deal with the expected result.
-     * 
+     *
      * @param rule the rule
      * @param helper the helper
      * @param shouldFail the should fail
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestEvaluateBeanshell.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestEvaluateBeanshell.java
index b107951..ab65511 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestEvaluateBeanshell.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestEvaluateBeanshell.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import junit.framework.TestCase;
 
@@ -28,7 +29,7 @@ import org.easymock.MockControl;
 
 /**
  * The Class TestEvaluateBeanshell.
- * 
+ *
  * @author hugonnem
  */
 public class TestEvaluateBeanshell
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestMavenVersion.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestMavenVersion.java
index 283ec12..627f801 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestMavenVersion.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestMavenVersion.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import junit.framework.TestCase;
 
@@ -27,7 +28,7 @@ import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 // TODO: Auto-generated Javadoc
 /**
  * The Class TestMavenVersion.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class TestMavenVersion
@@ -36,7 +37,7 @@ public class TestMavenVersion
 
     /**
      * Test rule.
-     * 
+     *
      * @throws EnforcerRuleException the enforcer rule exception
      */
     public void testRule()
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java
index ad06521..e6d5670 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.io.IOException;
 
@@ -28,7 +29,7 @@ import org.apache.maven.plugins.enforcer.utils.TestEnforcerRuleUtils;
 
 /**
  * The Class TestNoSnapshots.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class TestNoSnapshots
@@ -37,13 +38,13 @@ public class TestNoSnapshots
 
     /**
      * Test rule.
-     * 
+     *
      * @throws IOException Signals that an I/O exception has occurred.
      */
     public void testRule()
         throws IOException
     {
-        
+
         ArtifactStubFactory factory = new ArtifactStubFactory();
         MockProject project = new MockProject();
         EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
@@ -59,9 +60,9 @@ public class TestNoSnapshots
         TestEnforcerRuleUtils.execute( rule, helper, true );
 
         project.setArtifact( factory.getSnapshotArtifact() );
-        
+
         TestEnforcerRuleUtils.execute( rule, helper, true );
-    } 
+    }
 
     /**
      * Test id.
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireFilesSize.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireFilesSize.java
index 724c200..eac3c98 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireFilesSize.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireFilesSize.java
@@ -23,20 +23,16 @@ import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
-import java.io.OutputStreamWriter;
 
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.DefaultArtifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.plugin.testing.ArtifactStubFactory;
-import org.codehaus.plexus.PlexusTestCase;
 
 import junit.framework.TestCase;
 
 /**
  * Test the "require files exist" rule.
- * 
+ *
  * @author <a href="brianf at apache.org">Brian Fox</a>
  */
 public class TestRequireFilesSize
@@ -96,17 +92,18 @@ public class TestRequireFilesSize
 
         MockProject project = new MockProject();
         File f = File.createTempFile( "enforcer", "tmp" );
+        f.deleteOnExit();
         ArtifactStubFactory factory = new ArtifactStubFactory();
         Artifact a = factory.getReleaseArtifact();
         a.setFile( f );
-        
+
         project.setArtifact(a);
 
         // sanity check the mockProject
         assertSame( f, project.getArtifact().getFile() );
 
         rule.execute( EnforcerTestUtils.getHelper(project) );
-        
+
     }
 
     public void testFileDoesNotExist()
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java
index e6e7670..f0c756a 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import junit.framework.TestCase;
 
@@ -27,7 +28,7 @@ import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 // TODO: Auto-generated Javadoc
 /**
  * The Class TestRequireJavaVersion.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class TestRequireJavaVersion
@@ -61,7 +62,7 @@ public class TestRequireJavaVersion
 
     /**
      * Test rule.
-     * 
+     *
      * @throws EnforcerRuleException the enforcer rule exception
      */
     public void testRule()
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireNoRepositories.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireNoRepositories.java
index 9b32350..884ce0a 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireNoRepositories.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireNoRepositories.java
@@ -184,6 +184,66 @@ public class TestRequireNoRepositories
         rule.execute( helper );
     }
 
+    public void testReposNotAllowedWithSnapshotRepositories()
+        throws EnforcerRuleException
+    {
+        rule.allowSnapshotRepositories = true;
+
+        project.setArtifactId( "snapshot-plugin-repositories-child" );
+        project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/snapshot-plugin-repositories/child" ) );
+
+        try
+        {
+            rule.execute( helper );
+            fail( "Should have exception" );
+        }
+        catch ( EnforcerRuleException e )
+        {
+            assertTrue( true );
+        }
+    }
+
+    public void testReposAllowedWithSnapshotRepositories()
+        throws EnforcerRuleException
+    {
+        rule.allowSnapshotRepositories = true;
+
+        project.setArtifactId( "snapshot-repositories-child" );
+        project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/snapshot-repositories/child" ) );
+
+        rule.execute( helper );
+    }
+
+    public void testPluginReposNotAllowedWithSnapshotRepositories()
+        throws EnforcerRuleException
+    {
+        rule.allowSnapshotPluginRepositories = true;
+
+        project.setArtifactId( "snapshot-repositories-child" );
+        project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/snapshot-repositories/child" ) );
+
+        try
+        {
+            rule.execute( helper );
+            fail( "Should have exception" );
+        }
+        catch ( EnforcerRuleException e )
+        {
+            assertTrue( true );
+        }
+    }
+
+    public void testPluginReposAllowedWithSnapshotPluginRepositories()
+        throws EnforcerRuleException
+    {
+        rule.allowSnapshotPluginRepositories = true;
+
+        project.setArtifactId( "snapshot-plugin-repositories-child" );
+        project.setBaseDir( getTestFile( "target/test-classes/requireNoRepositories/snapshot-plugin-repositories/child" ) );
+
+        rule.execute( helper );
+    }
+
     /**
      * Test id.
      */
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireOS.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireOS.java
index ecad83e..63b3c07 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireOS.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireOS.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.util.Iterator;
 
@@ -30,7 +31,7 @@ import org.codehaus.plexus.util.Os;
 // TODO: Auto-generated Javadoc
 /**
  * Exhaustively check the OS mojo.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class TestRequireOS
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequirePluginVersions.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequirePluginVersions.java
index 0997e3c..832d278 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequirePluginVersions.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequirePluginVersions.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.io.File;
 import java.io.IOException;
@@ -40,7 +41,7 @@ import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 // TODO: Auto-generated Javadoc
 /**
  * The Class TestRequirePluginVersions.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class TestRequirePluginVersions
@@ -79,9 +80,9 @@ public class TestRequirePluginVersions
         plugins.add( EnforcerTestUtils.newPlugin( "group", "f-artifact", "1.0-SNAPSHOT" ) );
         plugins.add( EnforcerTestUtils.newPlugin( "group", "g-artifact", "1.0-12345678.123456-1" ) );
 
-        
+
         plugins = PluginWrapper.addAll( plugins, "unit" );
-        
+
         RequirePluginVersions rule = new RequirePluginVersions();
         rule.setBanLatest( false );
         rule.setBanRelease( false );
@@ -144,7 +145,7 @@ public class TestRequirePluginVersions
         plugins.add( EnforcerTestUtils.newPlugin( "group", "f-artifact", "${   }" ) );
 
         plugins = PluginWrapper.addAll( plugins, "unit" );
-        
+
         RequirePluginVersions rule = new RequirePluginVersions();
         rule.setBanLatest( false );
         rule.setBanRelease( false );
@@ -191,7 +192,7 @@ public class TestRequirePluginVersions
 
     /**
      * Test get all plugins.
-     * 
+     *
      * @throws ArtifactResolutionException the artifact resolution exception
      * @throws ArtifactNotFoundException the artifact not found exception
      * @throws IOException Signals that an I/O exception has occurred.
@@ -222,7 +223,7 @@ public class TestRequirePluginVersions
 
     /**
      * Test get additional plugins null.
-     * 
+     *
      * @throws MojoExecutionException the mojo execution exception
      */
     public void testGetAdditionalPluginsNull()
@@ -270,7 +271,7 @@ public class TestRequirePluginVersions
 
     /**
      * Test get additional plugins empty set.
-     * 
+     *
      * @throws MojoExecutionException the mojo execution exception
      */
     public void testGetAdditionalPluginsEmptySet()
@@ -298,7 +299,7 @@ public class TestRequirePluginVersions
 
     /**
      * Test get additional plugins.
-     * 
+     *
      * @throws MojoExecutionException the mojo execution exception
      */
     public void testGetAdditionalPlugins()
@@ -327,7 +328,7 @@ public class TestRequirePluginVersions
 
     /**
      * Test remove Unchecked plugins.
-     * 
+     *
      * @throws MojoExecutionException the mojo execution exception
      */
     public void testGetUncheckedPlugins()
@@ -335,17 +336,17 @@ public class TestRequirePluginVersions
     {
         RequirePluginVersions rule = new RequirePluginVersions();
 
-        Set plugins = new HashSet();
+        Set <Plugin> plugins = new HashSet<Plugin>();
         plugins.add( EnforcerTestUtils.newPlugin( "group", "a-artifact", "1.0" ) );
         plugins.add( EnforcerTestUtils.newPlugin( "group", "foo", null ) );
         plugins.add( EnforcerTestUtils.newPlugin( "group", "foo2", "" ) );
 
-        List unchecked = new ArrayList();
+        List<String> unchecked = new ArrayList<String>();
         //intentionally inserting spaces to make sure they are handled correctly.
         unchecked.add( "group : a-artifact" );
 
         Collection results = rule.removeUncheckedPlugins( unchecked, plugins );
-        
+
 
         // make sure only one new plugin has been added
         assertNotNull( results );
@@ -355,7 +356,7 @@ public class TestRequirePluginVersions
         assertNotContainPlugin( "group", "a-artifact", results );
 
     }
-    
+
     /**
      * Test combining values from both lists
      */
@@ -368,7 +369,7 @@ public class TestRequirePluginVersions
         plugins.add( "group:foo" );
         plugins.add( "group:foo2" );
 
-        Collection results = rule.combineUncheckedPlugins( plugins, "group2:a,group3:b" ); 
+        Collection results = rule.combineUncheckedPlugins( plugins, "group2:a,group3:b" );
 
         // make sure only one new plugin has been added
         assertNotNull( results );
@@ -379,7 +380,7 @@ public class TestRequirePluginVersions
         assertTrue( results.contains( "group2:a") );
         assertTrue( results.contains( "group3:b") );
     }
-    
+
     /**
      * Test combining with an empty list
      */
@@ -388,8 +389,8 @@ public class TestRequirePluginVersions
         RequirePluginVersions rule = new RequirePluginVersions();
 
         Set plugins = new HashSet();
-        Collection results = rule.combineUncheckedPlugins( plugins, "group2:a,group3:b" ); 
-        
+        Collection results = rule.combineUncheckedPlugins( plugins, "group2:a,group3:b" );
+
 
         // make sure only one new plugin has been added
         assertNotNull( results );
@@ -405,8 +406,8 @@ public class TestRequirePluginVersions
     {
         RequirePluginVersions rule = new RequirePluginVersions();
 
-        Collection results = rule.combineUncheckedPlugins( null, "group2:a,group3:b" ); 
-        
+        Collection results = rule.combineUncheckedPlugins( null, "group2:a,group3:b" );
+
 
         // make sure only one new plugin has been added
         assertNotNull( results );
@@ -426,8 +427,8 @@ public class TestRequirePluginVersions
         plugins.add( "group:a-artifact" );
         plugins.add( "group:foo" );
         plugins.add( "group:foo2" );
-                     
-        Collection results = rule.combineUncheckedPlugins( plugins, "" ); 
+
+        Collection results = rule.combineUncheckedPlugins( plugins, "" );
         assertNotNull( results );
         assertEquals( 3, results.size() );
         assertTrue( results.contains( "group:foo") );
@@ -446,14 +447,14 @@ public class TestRequirePluginVersions
         plugins.add( "group:a-artifact" );
         plugins.add( "group:foo" );
         plugins.add( "group:foo2" );
-                     
-        Collection results = rule.combineUncheckedPlugins( plugins, null ); 
+
+        Collection results = rule.combineUncheckedPlugins( plugins, null );
         assertNotNull( results );
-        assertEquals( 3, results.size() );   
+        assertEquals( 3, results.size() );
         assertTrue( results.contains( "group:foo") );
         assertTrue( results.contains( "group:foo2") );
         assertTrue( results.contains( "group:a-artifact") );
-    } 
+    }
 
     /**
      * Test combining with an invalid plugin string
@@ -466,20 +467,20 @@ public class TestRequirePluginVersions
         plugins.add( "group:a-artifact" );
         plugins.add( "group:foo" );
         plugins.add( "group:foo2" );
-        
-        Collection results = rule.combineUncheckedPlugins( plugins, "a" ); 
+
+        Collection results = rule.combineUncheckedPlugins( plugins, "a" );
         assertNotNull( results );
-        assertEquals( 4, results.size() ); 
+        assertEquals( 4, results.size() );
         assertTrue( results.contains( "group:foo") );
         assertTrue( results.contains( "group:foo2") );
         //this should be here, the checking of a valid plugin string happens in another method.
         assertTrue( results.contains( "a") );
     }
 
-    
+
     /**
      * Assert contains plugin.
-     * 
+     *
      * @param group the group
      * @param artifact the artifact
      * @param theSet the the set
@@ -494,7 +495,7 @@ public class TestRequirePluginVersions
 
     /**
      * Assert doesn't contain plugin.
-     * 
+     *
      * @param group the group
      * @param artifact the artifact
      * @param theSet the the set
@@ -506,7 +507,7 @@ public class TestRequirePluginVersions
         p.setArtifactId( artifact );
         assertFalse( theSet.contains( p ) );
     }
-    
+
     /**
      * Test id.
      */
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireProperty.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireProperty.java
index 00b8b24..e20fe6f 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireProperty.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireProperty.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import junit.framework.TestCase;
 
@@ -26,7 +27,7 @@ import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 // TODO: Auto-generated Javadoc
 /**
  * The Class TestRequireProperty.
- * 
+ *
  * @author Paul Gier
  */
 public class TestRequireProperty
@@ -35,7 +36,7 @@ public class TestRequireProperty
 
     /**
      * Test rule.
-     * 
+     *
      * @throws EnforcerRuleException the enforcer rule exception
      */
     public void testRule()
@@ -74,7 +75,7 @@ public class TestRequireProperty
 
     /**
      * Test rule with regex.
-     * 
+     *
      * @throws EnforcerRuleException the enforcer rule exception
      */
     public void testRuleWithRegex()
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java
index acd3ed6..3cde2c3 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.io.IOException;
 
@@ -29,7 +30,7 @@ import org.apache.maven.plugins.enforcer.utils.TestEnforcerRuleUtils;
 // TODO: Auto-generated Javadoc
 /**
  * The Class TestNoSnapshots.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class TestRequireReleaseDeps
@@ -38,13 +39,13 @@ public class TestRequireReleaseDeps
 
     /**
      * Test rule.
-     * 
+     *
      * @throws IOException Signals that an I/O exception has occurred.
      */
     public void testRule()
         throws IOException
     {
-        
+
         ArtifactStubFactory factory = new ArtifactStubFactory();
         MockProject project = new MockProject();
         EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
@@ -60,34 +61,34 @@ public class TestRequireReleaseDeps
         TestEnforcerRuleUtils.execute( rule, helper, true );
 
         // test onlyWhenRelease in each case
-        
+
         project.setArtifact( factory.getSnapshotArtifact() );
-        
+
         TestEnforcerRuleUtils.execute( rule, helper, true );
-        
+
         rule.onlyWhenRelease = true;
 
         TestEnforcerRuleUtils.execute( rule, helper, false );
 
         project.setArtifact( factory.getReleaseArtifact() );
-        
+
         TestEnforcerRuleUtils.execute( rule, helper, true );
-        
+
         MockProject parent = new MockProject();
         parent.setArtifact( factory.getSnapshotArtifact() );
         project.setParent( parent );
         project.setArtifacts( null );
         project.setDependencyArtifacts( null );
         helper = EnforcerTestUtils.getHelper(project);
-         
+
         rule.setFailWhenParentIsSnapshot( true );
         TestEnforcerRuleUtils.execute( rule, helper, true );
-        
+
         rule.setFailWhenParentIsSnapshot( false );
         TestEnforcerRuleUtils.execute( rule, helper, false );
-        
-        
-    } 
+
+
+    }
 
     /**
      * Test id.
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseVersion.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseVersion.java
index d9b229b..9d3f58c 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseVersion.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseVersion.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer;
 
 import java.io.IOException;
 
@@ -30,7 +31,7 @@ import org.apache.maven.plugins.enforcer.utils.TestEnforcerRuleUtils;
 // TODO: Auto-generated Javadoc
 /**
  * The Class TestRequireReleaseVersion.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class TestRequireReleaseVersion
@@ -39,7 +40,7 @@ public class TestRequireReleaseVersion
 
     /**
      * Test mojo.
-     * 
+     *
      * @throws IOException Signals that an I/O exception has occurred.
      */
     public void testMojo()
@@ -58,17 +59,17 @@ public class TestRequireReleaseVersion
         project.setArtifact( factory.getSnapshotArtifact() );
 
         TestEnforcerRuleUtils.execute( rule, helper, true );
-    
+
         project.setArtifact( factory.getReleaseArtifact() );
-        
+
         MockProject parent = new MockProject();
         parent.setArtifact( factory.getSnapshotArtifact() );
         project.setParent( parent );
         helper = EnforcerTestUtils.getHelper(project);
-         
+
         ( (RequireReleaseVersion) rule ).setFailWhenParentIsSnapshot( true );
         TestEnforcerRuleUtils.execute( rule, helper, true );
-        
+
         ( (RequireReleaseVersion) rule ).setFailWhenParentIsSnapshot( false );
         TestEnforcerRuleUtils.execute( rule, helper, false );
 
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java
index ac6e613..ae13bce 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer.utils;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer.utils;
 
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugins.enforcer.EnforcerExpressionEvaluator;
@@ -34,7 +35,7 @@ public class MockEnforcerExpressionEvaluator
 
     /**
      * Instantiates a new mock enforcer expression evaluator.
-     * 
+     *
      * @param theContext the the context
      * @param thePathTranslator the the path translator
      * @param theProject the the project
@@ -48,7 +49,7 @@ public class MockEnforcerExpressionEvaluator
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.maven.plugin.PluginParameterExpressionEvaluator#evaluate(java.lang.String)
      */
     public Object evaluate( String expr )
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestEnforcerRuleUtils.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestEnforcerRuleUtils.java
index ea8fd89..daa343f 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestEnforcerRuleUtils.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestEnforcerRuleUtils.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer.utils;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer.utils;
 
 import java.io.File;
 import java.io.IOException;
@@ -38,7 +39,7 @@ import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 // TODO: Auto-generated Javadoc
 /**
  * The Class TestEnforcerRuleUtils.
- * 
+ *
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
  */
 public class TestEnforcerRuleUtils
@@ -84,7 +85,7 @@ public class TestEnforcerRuleUtils
 
     /**
      * Test get models recursively bottom.
-     * 
+     *
      * @throws ArtifactResolutionException the artifact resolution exception
      * @throws ArtifactNotFoundException the artifact not found exception
      * @throws IOException Signals that an I/O exception has occurred.
@@ -122,7 +123,7 @@ public class TestEnforcerRuleUtils
 
     /**
      * Test get models recursively top.
-     * 
+     *
      * @throws ArtifactResolutionException the artifact resolution exception
      * @throws ArtifactNotFoundException the artifact not found exception
      * @throws IOException Signals that an I/O exception has occurred.
@@ -167,10 +168,10 @@ public class TestEnforcerRuleUtils
         parent.setGroupId( "org.apache.maven.plugins.enforcer.test" );
         parent.setArtifactId( "parent" );
         parent.setVersion( "1.0-SNAPSHOT" );
-        
+
         MockProject project = new MockProject();
         project.setParent( parent );
-        
+
         EnforcerRuleUtils utils = new EnforcerRuleUtils( EnforcerTestUtils.getHelper( project ) );
 
         List models =
@@ -236,7 +237,7 @@ public class TestEnforcerRuleUtils
 
     /**
      * Simpler wrapper to execute and deal with the expected result.
-     * 
+     *
      * @param rule the rule
      * @param helper the helper
      * @param shouldFail the should fail
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestMockEnforcerExpressionEvaluator.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestMockEnforcerExpressionEvaluator.java
index 31f9368..812e3d6 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestMockEnforcerExpressionEvaluator.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestMockEnforcerExpressionEvaluator.java
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer.utils;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -16,7 +18,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.maven.plugins.enforcer.utils;
 
 import junit.framework.TestCase;
 
@@ -53,7 +54,7 @@ public class TestMockEnforcerExpressionEvaluator
 
     /**
      * Assert match.
-     * 
+     *
      * @param ev the ev
      * @param exp the exp
      */
diff --git a/enforcer-rules/src/test/resources/requireNoRepositories/no-repositories/child/pom.xml b/enforcer-rules/src/test/resources/requireNoRepositories/snapshot-plugin-repositories/child/pom.xml
similarity index 51%
copy from enforcer-rules/src/test/resources/requireNoRepositories/no-repositories/child/pom.xml
copy to enforcer-rules/src/test/resources/requireNoRepositories/snapshot-plugin-repositories/child/pom.xml
index df61f3b..ddd80c1 100644
--- a/enforcer-rules/src/test/resources/requireNoRepositories/no-repositories/child/pom.xml
+++ b/enforcer-rules/src/test/resources/requireNoRepositories/snapshot-plugin-repositories/child/pom.xml
@@ -2,8 +2,8 @@
   <parent>
     <groupId>org.apache.maven.plugins.enforcer.test
     </groupId>
-    <artifactId>no-repositories</artifactId>
+    <artifactId>snapshot-plugin-repositories</artifactId>
     <version>1.0-SNAPSHOT</version>
   </parent>
-  <artifactId>no-repositories-child</artifactId>
+  <artifactId>snapshot-plugin-repositories-child</artifactId>
 </project>
\ No newline at end of file
diff --git a/enforcer-rules/src/test/resources/requireNoRepositories/with-plugin-repositories/pom.xml b/enforcer-rules/src/test/resources/requireNoRepositories/snapshot-plugin-repositories/pom.xml
similarity index 56%
copy from enforcer-rules/src/test/resources/requireNoRepositories/with-plugin-repositories/pom.xml
copy to enforcer-rules/src/test/resources/requireNoRepositories/snapshot-plugin-repositories/pom.xml
index 822e8b4..71e4bf1 100644
--- a/enforcer-rules/src/test/resources/requireNoRepositories/with-plugin-repositories/pom.xml
+++ b/enforcer-rules/src/test/resources/requireNoRepositories/snapshot-plugin-repositories/pom.xml
@@ -1,11 +1,17 @@
 <project>
   <groupId>org.apache.maven.plugins.enforcer.test</groupId>
-  <artifactId>with-plugin-repositories</artifactId>
+  <artifactId>snapshot-plugin-repositories</artifactId>
   <version>1.0-SNAPSHOT</version>
   <pluginRepositories>
     <pluginRepository>
       <id>repo</id>
       <url>http://example.com/repo</url>
+      <releases>
+        <enabled>false</enabled>
+      </releases>
+      <snapshots>
+        <enabled>true</enabled>
+      </snapshots>
     </pluginRepository>
   </pluginRepositories>
 </project>
\ No newline at end of file
diff --git a/enforcer-rules/src/test/resources/requireNoRepositories/no-repositories/child/pom.xml b/enforcer-rules/src/test/resources/requireNoRepositories/snapshot-repositories/child/pom.xml
similarity index 53%
copy from enforcer-rules/src/test/resources/requireNoRepositories/no-repositories/child/pom.xml
copy to enforcer-rules/src/test/resources/requireNoRepositories/snapshot-repositories/child/pom.xml
index df61f3b..82293a9 100644
--- a/enforcer-rules/src/test/resources/requireNoRepositories/no-repositories/child/pom.xml
+++ b/enforcer-rules/src/test/resources/requireNoRepositories/snapshot-repositories/child/pom.xml
@@ -2,8 +2,8 @@
   <parent>
     <groupId>org.apache.maven.plugins.enforcer.test
     </groupId>
-    <artifactId>no-repositories</artifactId>
+    <artifactId>snapshot-repositories</artifactId>
     <version>1.0-SNAPSHOT</version>
   </parent>
-  <artifactId>no-repositories-child</artifactId>
+  <artifactId>snapshot-repositories-child</artifactId>
 </project>
\ No newline at end of file
diff --git a/enforcer-rules/src/test/resources/requireNoRepositories/with-repositories/pom.xml b/enforcer-rules/src/test/resources/requireNoRepositories/snapshot-repositories/pom.xml
similarity index 54%
copy from enforcer-rules/src/test/resources/requireNoRepositories/with-repositories/pom.xml
copy to enforcer-rules/src/test/resources/requireNoRepositories/snapshot-repositories/pom.xml
index a6695c4..e34a962 100644
--- a/enforcer-rules/src/test/resources/requireNoRepositories/with-repositories/pom.xml
+++ b/enforcer-rules/src/test/resources/requireNoRepositories/snapshot-repositories/pom.xml
@@ -1,11 +1,17 @@
 <project>
   <groupId>org.apache.maven.plugins.enforcer.test</groupId>
-  <artifactId>with-repositories</artifactId>
+  <artifactId>snapshot-repositories</artifactId>
   <version>1.0-SNAPSHOT</version>
   <repositories>
     <repository>
       <id>repo</id>
       <url>http://example.com/repo</url>
+      <releases>
+        <enabled>false</enabled>
+      </releases>
+      <snapshots>
+        <enabled>true</enabled>
+      </snapshots>
     </repository>
   </repositories>
 </project>
\ No newline at end of file
diff --git a/maven-enforcer-plugin/pom.xml b/maven-enforcer-plugin/pom.xml
index f92555b..1d85fc4 100644
--- a/maven-enforcer-plugin/pom.xml
+++ b/maven-enforcer-plugin/pom.xml
@@ -20,22 +20,22 @@
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  <inceptionYear>2007</inceptionYear>
 
   <parent>
     <groupId>org.apache.maven.enforcer</groupId>
     <artifactId>enforcer</artifactId>
-    <version>1.0-beta-2</version>
+    <version>1.0</version>
   </parent>
 
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-enforcer-plugin</artifactId>
-  <version>1.0-beta-2</version>
+  <version>1.0</version>
   <packaging>maven-plugin</packaging>
 
   <name>Maven Enforcer Plugin</name>
   <description>The Loving Iron Fist of Maven</description>
   <url>http://maven.apache.org/plugins/maven-enforcer-plugin/</url>
+  <inceptionYear>2007</inceptionYear>
 
   <developers>
     <developer>
@@ -167,4 +167,38 @@
       </plugin>
     </plugins>
   </reporting>
+
+  <profiles>
+    <profile>
+      <id>run-its</id>
+      <build>
+        <plugins>
+          <plugin>
+            <artifactId>maven-invoker-plugin</artifactId>
+            <version>1.5</version>
+            <configuration>
+              <debug>true</debug>
+              <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
+              <preBuildHookScript>setup</preBuildHookScript>
+              <postBuildHookScript>verify</postBuildHookScript>
+              <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
+              <settingsFile>src/it/settings.xml</settingsFile>
+              <goals>
+                <goal>validate</goal>
+              </goals>
+            </configuration>
+            <executions>
+              <execution>
+                <id>integration-test</id>
+                <goals>
+                  <goal>install</goal>
+                  <goal>run</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/maven-enforcer-plugin/src/it/always-fail/invoker.properties b/maven-enforcer-plugin/src/it/always-fail/invoker.properties
new file mode 100644
index 0000000..c21e972
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/always-fail/invoker.properties
@@ -0,0 +1 @@
+invoker.buildResult = failure
diff --git a/maven-enforcer-plugin/src/site/fml/faq.fml b/maven-enforcer-plugin/src/it/always-fail/pom.xml
similarity index 50%
copy from maven-enforcer-plugin/src/site/fml/faq.fml
copy to maven-enforcer-plugin/src/it/always-fail/pom.xml
index 77a09d7..53c77c8 100644
--- a/maven-enforcer-plugin/src/site/fml/faq.fml
+++ b/maven-enforcer-plugin/src/it/always-fail/pom.xml
@@ -19,18 +19,36 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<faqs id="FAQ" title="Frequently Asked Questions">
-  <part id="General">
-    <faq id="question">
-      <question>Why can't I just use the prerequisites tag in the pom?</question>
-      <answer>
-        <p>
-          The prerequisites tag was designed to be used by tools like plugins. It will work for regular projects, but it isn't
-          inherited to their children. If it is set in a parent reactor, then Maven will do the check. However if one of the
-          children are built, the check is not performed. The enforcer plugin is designed to allow centralized control over the build environment from 
-          a single "super-pom", and to allow greater flexibility in version specification by supporting ranges.
-        </p>
-      </answer>
-    </faq>
-  </part>
-</faqs>
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <AlwaysFail/>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/maven-enforcer-plugin/src/site/fml/faq.fml b/maven-enforcer-plugin/src/it/always-pass/pom.xml
similarity index 50%
copy from maven-enforcer-plugin/src/site/fml/faq.fml
copy to maven-enforcer-plugin/src/it/always-pass/pom.xml
index 77a09d7..2375f8c 100644
--- a/maven-enforcer-plugin/src/site/fml/faq.fml
+++ b/maven-enforcer-plugin/src/it/always-pass/pom.xml
@@ -19,18 +19,36 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<faqs id="FAQ" title="Frequently Asked Questions">
-  <part id="General">
-    <faq id="question">
-      <question>Why can't I just use the prerequisites tag in the pom?</question>
-      <answer>
-        <p>
-          The prerequisites tag was designed to be used by tools like plugins. It will work for regular projects, but it isn't
-          inherited to their children. If it is set in a parent reactor, then Maven will do the check. However if one of the
-          children are built, the check is not performed. The enforcer plugin is designed to allow centralized control over the build environment from 
-          a single "super-pom", and to allow greater flexibility in version specification by supporting ranges.
-        </p>
-      </answer>
-    </faq>
-  </part>
-</faqs>
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <AlwaysPass/>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/maven-enforcer-plugin/src/it/banned-dependencies-wildcards/pom.xml b/maven-enforcer-plugin/src/it/banned-dependencies-wildcards/pom.xml
new file mode 100644
index 0000000..46fdcb6
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/banned-dependencies-wildcards/pom.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <bannedDependencies>
+                  <excludes>
+                    <exclude>*:*:*:jar</exclude>
+                  </excludes>
+                  <includes>
+                    <include>junit:*:*:*:test</include>
+                  </includes>
+                </bannedDependencies>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  
+  <dependencies>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+      <version>1.1.1</version>
+      <type>pom</type>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/maven-enforcer-plugin/src/it/banned-dependencies/pom.xml b/maven-enforcer-plugin/src/it/banned-dependencies/pom.xml
new file mode 100644
index 0000000..a0137f2
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/banned-dependencies/pom.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <BannedDependencies>
+                  <excludes>
+                    <exclude>commons-logging:commons-logging</exclude>
+                  </excludes>
+                </BannedDependencies>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/maven-enforcer-plugin/src/site/fml/faq.fml b/maven-enforcer-plugin/src/it/banned-plugins/pom.xml
similarity index 50%
copy from maven-enforcer-plugin/src/site/fml/faq.fml
copy to maven-enforcer-plugin/src/it/banned-plugins/pom.xml
index 77a09d7..7a59cd8 100644
--- a/maven-enforcer-plugin/src/site/fml/faq.fml
+++ b/maven-enforcer-plugin/src/it/banned-plugins/pom.xml
@@ -19,18 +19,37 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<faqs id="FAQ" title="Frequently Asked Questions">
-  <part id="General">
-    <faq id="question">
-      <question>Why can't I just use the prerequisites tag in the pom?</question>
-      <answer>
-        <p>
-          The prerequisites tag was designed to be used by tools like plugins. It will work for regular projects, but it isn't
-          inherited to their children. If it is set in a parent reactor, then Maven will do the check. However if one of the
-          children are built, the check is not performed. The enforcer plugin is designed to allow centralized control over the build environment from 
-          a single "super-pom", and to allow greater flexibility in version specification by supporting ranges.
-        </p>
-      </answer>
-    </faq>
-  </part>
-</faqs>
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <bannedPlugins>
+                </bannedPlugins>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/maven-enforcer-plugin/src/it/builds_a_pom_noop/module/pom.xml b/maven-enforcer-plugin/src/it/builds_a_pom_noop/module/pom.xml
new file mode 100644
index 0000000..eb4ad89
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/builds_a_pom_noop/module/pom.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>test</groupId>
+    <artifactId>TestParent</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>TestModule</artifactId>
+  <version>1.0-SNAPSHOT</version>
+</project>
diff --git a/maven-enforcer-plugin/src/it/builds_a_pom_noop/pom.xml b/maven-enforcer-plugin/src/it/builds_a_pom_noop/pom.xml
new file mode 100644
index 0000000..0f73306
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/builds_a_pom_noop/pom.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>test</groupId>
+  <artifactId>TestParent</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>enforce</id>
+            <configuration>
+              <rules>
+                <DependencyConvergence/>
+              </rules>
+            </configuration>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
\ No newline at end of file
diff --git a/maven-enforcer-plugin/src/it/dependencies_converge/module/pom.xml b/maven-enforcer-plugin/src/it/dependencies_converge/module/pom.xml
new file mode 100644
index 0000000..eb4ad89
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/dependencies_converge/module/pom.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>test</groupId>
+    <artifactId>TestParent</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>TestModule</artifactId>
+  <version>1.0-SNAPSHOT</version>
+</project>
diff --git a/maven-enforcer-plugin/src/it/dependencies_converge/pom.xml b/maven-enforcer-plugin/src/it/dependencies_converge/pom.xml
new file mode 100644
index 0000000..2986949
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/dependencies_converge/pom.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>test</groupId>
+  <artifactId>TestParent</artifactId>
+  <version>1.0</version>
+  <packaging>jar</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-jdk14</artifactId>
+      <version>1.6.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-nop</artifactId>
+      <version>1.6.0</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.slf4j</groupId>
+          <artifactId>slf4j-api</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>enforce</id>
+            <configuration>
+              <rules>
+                <DependencyConvergence/>
+              </rules>
+            </configuration>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
\ No newline at end of file
diff --git a/maven-enforcer-plugin/src/it/dependencies_not_converging/invoker.properties b/maven-enforcer-plugin/src/it/dependencies_not_converging/invoker.properties
new file mode 100644
index 0000000..324b5fb
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/dependencies_not_converging/invoker.properties
@@ -0,0 +1 @@
+invoker.buildResult=failure
\ No newline at end of file
diff --git a/maven-enforcer-plugin/src/it/dependencies_not_converging/module/pom.xml b/maven-enforcer-plugin/src/it/dependencies_not_converging/module/pom.xml
new file mode 100644
index 0000000..e27990b
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/dependencies_not_converging/module/pom.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>test</groupId>
+    <artifactId>TestParent</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>TestModule</artifactId>
+  <version>1.1-SNAPSHOT</version>
+</project>
diff --git a/maven-enforcer-plugin/src/it/dependencies_not_converging/pom.xml b/maven-enforcer-plugin/src/it/dependencies_not_converging/pom.xml
new file mode 100644
index 0000000..92fa729
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/dependencies_not_converging/pom.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>test</groupId>
+  <artifactId>TestParent</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-jdk14</artifactId>
+      <version>1.6.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-nop</artifactId>
+      <version>1.6.0</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>enforce</id>
+            <configuration>
+              <rules>
+                <DependencyConvergence/>
+              </rules>
+            </configuration>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
\ No newline at end of file
diff --git a/maven-enforcer-plugin/src/it/dependencies_not_converging_test_scope/invoker.properties b/maven-enforcer-plugin/src/it/dependencies_not_converging_test_scope/invoker.properties
new file mode 100644
index 0000000..324b5fb
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/dependencies_not_converging_test_scope/invoker.properties
@@ -0,0 +1 @@
+invoker.buildResult=failure
\ No newline at end of file
diff --git a/maven-enforcer-plugin/src/it/dependencies_not_converging_test_scope/module/pom.xml b/maven-enforcer-plugin/src/it/dependencies_not_converging_test_scope/module/pom.xml
new file mode 100644
index 0000000..e27990b
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/dependencies_not_converging_test_scope/module/pom.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>test</groupId>
+    <artifactId>TestParent</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>TestModule</artifactId>
+  <version>1.1-SNAPSHOT</version>
+</project>
diff --git a/maven-enforcer-plugin/src/it/dependencies_not_converging_test_scope/pom.xml b/maven-enforcer-plugin/src/it/dependencies_not_converging_test_scope/pom.xml
new file mode 100644
index 0000000..9fd8da5
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/dependencies_not_converging_test_scope/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>test</groupId>
+  <artifactId>TestParent</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-jdk14</artifactId>
+      <version>1.6.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-nop</artifactId>
+      <version>1.6.0</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+               <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>enforce</id>
+            <configuration>
+              <rules>
+                <DependencyConvergence/>
+              </rules>
+            </configuration>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
\ No newline at end of file
diff --git a/maven-enforcer-plugin/src/it/evaluate-beanshell/pom.xml b/maven-enforcer-plugin/src/it/evaluate-beanshell/pom.xml
new file mode 100644
index 0000000..fd6dcea
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/evaluate-beanshell/pom.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <evaluateBeanshell>
+                  <condition>${project.artifactId} == test</condition>
+                </evaluateBeanshell>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/maven-enforcer-plugin/src/it/pom.xml b/maven-enforcer-plugin/src/it/pom.xml
index 2b15a5c..a93a64e 100644
--- a/maven-enforcer-plugin/src/it/pom.xml
+++ b/maven-enforcer-plugin/src/it/pom.xml
@@ -74,6 +74,11 @@
 								<exclude>org.apache.maven</exclude>
 								</excludes>
 								</bannedDependencies>
+								<bannedPlugins>
+								<excludes>
+								<exclude>com.acme</exclude>
+								</excludes>
+								</bannedPlugins>
 								<requirePluginVersions/>
 							</rules>
 						</configuration>
diff --git a/maven-enforcer-plugin/src/it/require-active-profile/pom.xml b/maven-enforcer-plugin/src/it/require-active-profile/pom.xml
new file mode 100644
index 0000000..b57cce6
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/require-active-profile/pom.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireActiveProfile>
+                  <profiles>it</profiles>
+                </requireActiveProfile>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+  <profiles>
+    <profile>
+      <id>it</id>
+      <activation>
+        <activeByDefault>true</activeByDefault>
+      </activation>
+    </profile>
+  </profiles>
+</project>
diff --git a/maven-enforcer-plugin/src/it/require-files-dont-exist/pom.xml b/maven-enforcer-plugin/src/it/require-files-dont-exist/pom.xml
new file mode 100644
index 0000000..544c1a2
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/require-files-dont-exist/pom.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireFilesDontExist>
+                  <files>
+                    <file>target/unwanted.txt</file>
+                  </files>
+                </requireFilesDontExist>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/maven-enforcer-plugin/src/it/require-files-exist/pom.xml b/maven-enforcer-plugin/src/it/require-files-exist/pom.xml
new file mode 100644
index 0000000..ce4612c
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/require-files-exist/pom.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireFilesExist>
+                  <files>
+                    <file>pom.xml</file>
+                  </files>
+                </requireFilesExist>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/maven-enforcer-plugin/src/it/require-files-size/pom.xml b/maven-enforcer-plugin/src/it/require-files-size/pom.xml
new file mode 100644
index 0000000..4223598
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/require-files-size/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireFilesSize>
+                  <maxsize>10240</maxsize>
+                  <minsize>512</minsize>
+                  <files>
+                    <file>pom.xml</file>
+                  </files>
+                </requireFilesSize>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/maven-enforcer-plugin/src/it/require-java-version/pom.xml b/maven-enforcer-plugin/src/it/require-java-version/pom.xml
new file mode 100644
index 0000000..8e85cff
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/require-java-version/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireJavaVersion>
+                  <!-- implicit range -->
+                  <version>1.4</version>
+                </requireJavaVersion>
+                <requireJavaVersion>
+                  <!-- explicit range -->
+                  <version>[1.4,)</version>
+                </requireJavaVersion>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/maven-enforcer-plugin/src/it/require-maven-version/pom.xml b/maven-enforcer-plugin/src/it/require-maven-version/pom.xml
new file mode 100644
index 0000000..e2c26df
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/require-maven-version/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireMavenVersion>
+                  <!-- implicit range -->
+                  <version>2.0</version>
+                </requireMavenVersion>
+                <requireMavenVersion>
+                  <!-- explicit range -->
+                  <version>[2.0,)</version>
+                </requireMavenVersion>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/maven-enforcer-plugin/src/it/require-no-repositories/pom.xml b/maven-enforcer-plugin/src/it/require-no-repositories/pom.xml
new file mode 100644
index 0000000..c66de18
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/require-no-repositories/pom.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireNoRepositories>
+                </requireNoRepositories>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/maven-enforcer-plugin/src/it/require-plugin-versions-custom-packaging/pom.xml b/maven-enforcer-plugin/src/it/require-plugin-versions-custom-packaging/pom.xml
new file mode 100644
index 0000000..9a82bfa
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/require-plugin-versions-custom-packaging/pom.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+  <packaging>maven-one-plugin</packaging>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-one-plugin</artifactId>
+        <version>1.2</version>
+        <extensions>true</extensions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requirePluginVersions>
+                  <banSnapshots>false</banSnapshots>
+                  <unCheckedPluginList>
+                    org.apache.maven.plugins:maven-clean-plugin,
+                    org.apache.maven.plugins:maven-install-plugin,
+                    org.apache.maven.plugins:maven-deploy-plugin,
+                    org.apache.maven.plugins:maven-site-plugin,
+                    org.apache.maven.plugins:maven-resources-plugin,
+                    org.apache.maven.plugins:maven-compiler-plugin,
+                    org.apache.maven.plugins:maven-surefire-plugin
+                  </unCheckedPluginList>
+                </requirePluginVersions>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/maven-enforcer-plugin/src/it/require-plugin-versions/pom.xml b/maven-enforcer-plugin/src/it/require-plugin-versions/pom.xml
new file mode 100644
index 0000000..7bd7043
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/require-plugin-versions/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+  <packaging>pom</packaging>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requirePluginVersions>
+                  <banSnapshots>false</banSnapshots>
+                  <unCheckedPluginList>
+                    org.apache.maven.plugins:maven-clean-plugin,org.apache.maven.plugins:maven-install-plugin,org.apache.maven.plugins:maven-deploy-plugin,org.apache.maven.plugins:maven-site-plugin
+                  </unCheckedPluginList>
+                </requirePluginVersions>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/maven-enforcer-plugin/src/it/require-property/pom.xml b/maven-enforcer-plugin/src/it/require-property/pom.xml
new file mode 100644
index 0000000..da9f997
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/require-property/pom.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireProperty>
+                  <property>basedir</property>
+                </requireProperty>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/maven-enforcer-plugin/src/it/require-release-dependencies-excludes/goals.txt b/maven-enforcer-plugin/src/it/require-release-dependencies-excludes/goals.txt
new file mode 100644
index 0000000..1d8e0fd
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/require-release-dependencies-excludes/goals.txt
@@ -0,0 +1 @@
+validate
\ No newline at end of file
diff --git a/maven-enforcer-plugin/src/it/require-release-dependencies-excludes/pom.xml b/maven-enforcer-plugin/src/it/require-release-dependencies-excludes/pom.xml
new file mode 100644
index 0000000..5e84f75
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/require-release-dependencies-excludes/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?><project>
+  
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.enforcer.its</groupId>
+  <artifactId>requireReleaseDeps</artifactId>
+  <packaging>jar</packaging>
+  <version>1.0-SNAPSHOT</version>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>enforce</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireReleaseDeps>
+                  <message>No Snapshots Allowed!</message>
+                  <excludes>
+                    <exclude>org.apache.maven.enforcer:enforcer-api</exclude>
+                  </excludes>
+                </requireReleaseDeps>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.enforcer</groupId>
+      <artifactId>enforcer-api</artifactId>
+      <version>@project.version@</version>
+    </dependency>
+  </dependencies>
+ </project>
\ No newline at end of file
diff --git a/maven-enforcer-plugin/src/site/fml/faq.fml b/maven-enforcer-plugin/src/it/require-release-dependencies/pom.xml
similarity index 50%
copy from maven-enforcer-plugin/src/site/fml/faq.fml
copy to maven-enforcer-plugin/src/it/require-release-dependencies/pom.xml
index 77a09d7..6693dc6 100644
--- a/maven-enforcer-plugin/src/site/fml/faq.fml
+++ b/maven-enforcer-plugin/src/it/require-release-dependencies/pom.xml
@@ -19,18 +19,36 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<faqs id="FAQ" title="Frequently Asked Questions">
-  <part id="General">
-    <faq id="question">
-      <question>Why can't I just use the prerequisites tag in the pom?</question>
-      <answer>
-        <p>
-          The prerequisites tag was designed to be used by tools like plugins. It will work for regular projects, but it isn't
-          inherited to their children. If it is set in a parent reactor, then Maven will do the check. However if one of the
-          children are built, the check is not performed. The enforcer plugin is designed to allow centralized control over the build environment from 
-          a single "super-pom", and to allow greater flexibility in version specification by supporting ranges.
-        </p>
-      </answer>
-    </faq>
-  </part>
-</faqs>
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireReleaseDeps/>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/maven-enforcer-plugin/src/site/fml/faq.fml b/maven-enforcer-plugin/src/it/require-release-version/pom.xml
similarity index 50%
copy from maven-enforcer-plugin/src/site/fml/faq.fml
copy to maven-enforcer-plugin/src/it/require-release-version/pom.xml
index 77a09d7..2b5d582 100644
--- a/maven-enforcer-plugin/src/site/fml/faq.fml
+++ b/maven-enforcer-plugin/src/it/require-release-version/pom.xml
@@ -19,18 +19,36 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<faqs id="FAQ" title="Frequently Asked Questions">
-  <part id="General">
-    <faq id="question">
-      <question>Why can't I just use the prerequisites tag in the pom?</question>
-      <answer>
-        <p>
-          The prerequisites tag was designed to be used by tools like plugins. It will work for regular projects, but it isn't
-          inherited to their children. If it is set in a parent reactor, then Maven will do the check. However if one of the
-          children are built, the check is not performed. The enforcer plugin is designed to allow centralized control over the build environment from 
-          a single "super-pom", and to allow greater flexibility in version specification by supporting ranges.
-        </p>
-      </answer>
-    </faq>
-  </part>
-</faqs>
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.enforcer</groupId>
+  <artifactId>test</artifactId>
+  <version>1.0</version>
+
+  <description>
+  </description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireReleaseVersion/>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/maven-enforcer-plugin/src/it/settings.xml b/maven-enforcer-plugin/src/it/settings.xml
new file mode 100644
index 0000000..c8f77f0
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/settings.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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.
+-->
+
+<settings>
+  <profiles>
+    <profile>
+      <id>it-repo</id>
+      <activation>
+        <activeByDefault>true</activeByDefault>
+      </activation>
+      <repositories>
+        <repository>
+          <id>local.central</id>
+          <url>@localRepositoryUrl@</url>
+          <releases>
+            <enabled>true</enabled>
+          </releases>
+          <snapshots>
+            <enabled>true</enabled>
+          </snapshots>
+        </repository>
+      </repositories>
+      <pluginRepositories>
+        <pluginRepository>
+          <id>local.central</id>
+          <url>@localRepositoryUrl@</url>
+          <releases>
+            <enabled>true</enabled>
+          </releases>
+          <snapshots>
+            <enabled>true</enabled>
+          </snapshots>
+        </pluginRepository>
+      </pluginRepositories>
+    </profile>
+  </profiles>
+</settings>
diff --git a/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java
index a058a73..74c2a08 100644
--- a/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java
+++ b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java
@@ -46,7 +46,7 @@ import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
  * @goal enforce
  * @phase validate
  * @author <a href="mailto:brianf at apache.org">Brian Fox</a>
- * @version $Id: EnforceMojo.java 728953 2008-12-23 13:52:15Z brett $
+ * @version $Id: EnforceMojo.java 767320 2009-04-21 22:42:24Z bentmann $
  */
 public class EnforceMojo
     extends AbstractMojo
@@ -64,6 +64,7 @@ public class EnforceMojo
      * The MavenSession
      * 
      * @parameter expression="${session}"
+     * @readonly
      */
     protected MavenSession session;
 
diff --git a/maven-enforcer-plugin/src/site/apt/index.apt b/maven-enforcer-plugin/src/site/apt/index.apt
index de377cf..80e3375 100644
--- a/maven-enforcer-plugin/src/site/apt/index.apt
+++ b/maven-enforcer-plugin/src/site/apt/index.apt
@@ -13,8 +13,8 @@
 ~~ "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.    
- 
+~~ under the License.
+
   ------
   Introduction
   ------
@@ -31,26 +31,26 @@ Maven Enforcer Plugin - The Loving Iron Fist of Maven\x99
 
   The Enforcer plugin has two goals:
 
-  *{{{enforce-mojo.html}enforcer:enforce}} executes rules for each project in a multi-project build.
-  
-  *{{{display-info-mojo.html}enforcer:display-info}} display the current information as detected by the standard rules.
+  *{{{./enforce-mojo.html}enforcer:enforce}} executes rules for each project in a multi-project build.
+
+  *{{{./display-info-mojo.html}enforcer:display-info}} display the current information as detected by the standard rules.
 
 * Usage
 
-  General instructions on how to use the Enforcer Plugin can be found on the {{{usage.html}usage page}}.
+  General instructions on how to use the Enforcer Plugin can be found on the {{{./usage.html}usage page}}.
   Last but not least, users occasionally contribute
   additional examples, tips or errata to the
   {{{http://docs.codehaus.org/display/MAVENUSER/Enforcer+Plugin}plugin's wiki page}}.
 
-  In case you still have questions regarding the plugin's usage, please have a look at the {{{faq.html}FAQ}} and feel
-  free to contact the {{{mail-lists.html}user mailing list}}. The posts to the mailing list are archived and could
+  In case you still have questions regarding the plugin's usage, please have a look at the {{{./faq.html}FAQ}} and feel
+  free to contact the {{{./mail-lists.html}user mailing list}}. The posts to the mailing list are archived and could
   already contain the answer to your question as part of an older thread. Hence, it is also worth browsing/searching
-  the {{{mail-lists.html}mail archive}}.
+  the {{{./mail-lists.html}mail archive}}.
 
   If you feel like the plugin is missing a feature or has a defect, you can fill a feature request or bug report in our
-  {{{issue-tracking.html}issue tracker}}. When creating a new issue, please provide a comprehensive description of your
+  {{{./issue-tracking.html}issue tracker}}. When creating a new issue, please provide a comprehensive description of your
   concern. Especially for fixing bugs it is crucial that the developers can reproduce your problem. For this reason,
   entire debug logs, POMs or most preferably little demo projects attached to the issue are very much appreciated.
   Of course, patches are welcome, too. Contributors can check out the project from our
-  {{{source-repository.html}source repository}} and will find supplementary information in the
+  {{{./source-repository.html}source repository}} and will find supplementary information in the
   {{{http://maven.apache.org/guides/development/guide-helping.html}guide to helping with Maven}}.
diff --git a/maven-enforcer-plugin/src/site/apt/usage.apt b/maven-enforcer-plugin/src/site/apt/usage.apt.vm
similarity index 97%
rename from maven-enforcer-plugin/src/site/apt/usage.apt
rename to maven-enforcer-plugin/src/site/apt/usage.apt.vm
index ec3c617..2c51148 100644
--- a/maven-enforcer-plugin/src/site/apt/usage.apt
+++ b/maven-enforcer-plugin/src/site/apt/usage.apt.vm
@@ -65,10 +65,11 @@ Usage
 <project>
   [...]
   <build>
-   <plugins>
-     <plugin>
+    <plugins>
+      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
+        <version>${project.version}</version>
         <executions>
           <execution>
             <id>enforce-versions</id>
@@ -85,7 +86,7 @@ Usage
                 </requireJavaVersion>
                 <requireOS>
                   <family>unix</family>
-                </requireOS>		
+                </requireOS>
               </rules>
             </configuration>
           </execution>
diff --git a/maven-enforcer-plugin/src/site/fml/faq.fml b/maven-enforcer-plugin/src/site/fml/faq.fml
index 77a09d7..90482ee 100644
--- a/maven-enforcer-plugin/src/site/fml/faq.fml
+++ b/maven-enforcer-plugin/src/site/fml/faq.fml
@@ -19,7 +19,10 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-<faqs id="FAQ" title="Frequently Asked Questions">
+<faqs xmlns="http://maven.apache.org/FML/1.0.1"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/FML/1.0.1 http://maven.apache.org/xsd/fml-1.0.1.xsd"
+  id="FAQ" title="Frequently Asked Questions">
   <part id="General">
     <faq id="question">
       <question>Why can't I just use the prerequisites tag in the pom?</question>
@@ -27,7 +30,7 @@ under the License.
         <p>
           The prerequisites tag was designed to be used by tools like plugins. It will work for regular projects, but it isn't
           inherited to their children. If it is set in a parent reactor, then Maven will do the check. However if one of the
-          children are built, the check is not performed. The enforcer plugin is designed to allow centralized control over the build environment from 
+          children are built, the check is not performed. The enforcer plugin is designed to allow centralized control over the build environment from
           a single "super-pom", and to allow greater flexibility in version specification by supporting ranges.
         </p>
       </answer>
diff --git a/maven-enforcer-plugin/src/site/site.xml b/maven-enforcer-plugin/src/site/site.xml
index ea7ddf8..510d7c7 100644
--- a/maven-enforcer-plugin/src/site/site.xml
+++ b/maven-enforcer-plugin/src/site/site.xml
@@ -17,7 +17,11 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 -->
-<project>
+
+<project xmlns="http://maven.apache.org/DECORATION/1.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd"
+  name="Maven Enforcer plugin">
   <body>
     <menu name="Overview">
       <item name="Introduction" href="index.html"/>
diff --git a/pom.xml b/pom.xml
index 11d3abe..3dadd31 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,13 +23,12 @@
   <parent>
     <artifactId>maven-parent</artifactId>
     <groupId>org.apache.maven</groupId>
-    <version>11</version>
+    <version>17</version>
     <relativePath>../pom/maven/pom.xml</relativePath>
   </parent>
-
   <groupId>org.apache.maven.enforcer</groupId>
   <artifactId>enforcer</artifactId>
-  <version>1.0-beta-2</version>
+  <version>1.0</version>
   <packaging>pom</packaging>
 
   <name>Enforcer</name>
@@ -58,7 +57,7 @@
       <archive>http://mail-archives.apache.org/mod_mbox/maven-users</archive>
       <otherArchives>
         <otherArchive>http://www.mail-archive.com/users@maven.apache.org/</otherArchive>
-        <otherArchive>http://www.nabble.com/Maven---Users-f178.html</otherArchive>
+        <otherArchive>http://old.nabble.com/Maven---Users-f178.html</otherArchive>
         <otherArchive>http://maven.users.markmail.org/</otherArchive>
       </otherArchives>
     </mailingList>
@@ -70,7 +69,7 @@
       <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>
       <otherArchives>
         <otherArchive>http://www.mail-archive.com/dev@maven.apache.org/</otherArchive>
-        <otherArchive>http://www.nabble.com/Maven-Developers-f179.html</otherArchive>
+        <otherArchive>http://old.nabble.com/Maven-Developers-f179.html</otherArchive>
         <otherArchive>http://maven.dev.markmail.org/</otherArchive>
       </otherArchives>
     </mailingList>
@@ -81,7 +80,7 @@
       <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>
       <otherArchives>
         <otherArchive>http://www.mail-archive.com/issues@maven.apache.org</otherArchive>
-        <otherArchive>http://www.nabble.com/Maven---Issues-f15573.html</otherArchive>
+        <otherArchive>http://old.nabble.com/Maven---Issues-f15573.html</otherArchive>
         <otherArchive>http://maven.issues.markmail.org/</otherArchive>
       </otherArchives>
     </mailingList>
@@ -92,7 +91,7 @@
       <archive>http://mail-archives.apache.org/mod_mbox/maven-dev</archive>
       <otherArchives>
         <otherArchive>http://www.mail-archive.com/commits@maven.apache.org</otherArchive>
-        <otherArchive>http://www.nabble.com/Maven---Commits-f15575.html</otherArchive>
+        <otherArchive>http://old.nabble.com/Maven---Commits-f15575.html</otherArchive>
         <otherArchive>http://maven.commits.markmail.org/</otherArchive>
       </otherArchives>
     </mailingList>
@@ -105,7 +104,7 @@
       <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>
       <otherArchives>
         <otherArchive>http://www.mail-archive.com/announce@maven.apache.org</otherArchive>
-        <otherArchive>http://www.nabble.com/Maven-Announcements-f15617.html</otherArchive>
+        <otherArchive>http://old.nabble.com/Maven-Announcements-f15617.html</otherArchive>
         <otherArchive>http://maven.announce.markmail.org/</otherArchive>
       </otherArchives>
     </mailingList>
@@ -116,7 +115,7 @@
       <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>
       <otherArchives>
         <otherArchive>http://www.mail-archive.com/notifications@maven.apache.org</otherArchive>
-        <otherArchive>http://www.nabble.com/Maven---Notifications-f15574.html</otherArchive>
+        <otherArchive>http://old.nabble.com/Maven---Notifications-f15574.html</otherArchive>
         <otherArchive>http://maven.notifications.markmail.org/</otherArchive>
       </otherArchives>
     </mailingList>
@@ -133,24 +132,23 @@
   </modules>
 
   <scm>
-    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/enforcer/tags/enforcer-1.0-beta-2</connection>
-    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/enforcer/tags/enforcer-1.0-beta-2</developerConnection>
-    <url>http://svn.apache.org/viewcvs.cgi/maven/enforcer/tags/enforcer-1.0-beta-2</url>
+    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/enforcer/tags/enforcer-1.0</connection>
+    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/enforcer/tags/enforcer-1.0</developerConnection>
+    <url>http://svn.apache.org/viewcvs.cgi/maven/enforcer/tags/enforcer-1.0</url>
   </scm>
   <issueManagement>
     <system>jira</system>
     <url>http://jira.codehaus.org/browse/MENFORCER</url>
   </issueManagement>
-  <distributionManagement>
+    <distributionManagement>
     <site>
       <id>apache.website</id>
-      <url>${site.deploy.url}/enforcer/</url>
+      <url>scp://people.apache.org/www/maven.apache.org/enforcer/</url>
     </site>
   </distributionManagement>
-
   <properties>
     <maven.version>2.0.9</maven.version>
-    <maven.plugin.plugin.version>2.4.3</maven.plugin.plugin.version>
+    <maven.plugin.plugin.version>2.5.1</maven.plugin.plugin.version>
     <site.deploy.url>scp://people.apache.org/www/maven.apache.org</site.deploy.url>
   </properties>
 
@@ -194,6 +192,11 @@
         <version>${maven.version}</version>
       </dependency>
       <dependency>
+        <groupId>org.apache.maven.shared</groupId>
+        <artifactId>maven-common-artifact-filters</artifactId>
+        <version>1.2</version>
+      </dependency>
+      <dependency>
         <groupId>org.codehaus.plexus</groupId>
         <artifactId>plexus-utils</artifactId>
         <version>1.5.8</version>
@@ -241,8 +244,8 @@
         <plugin>
           <artifactId>maven-compiler-plugin</artifactId>
           <configuration>
-            <source>1.4</source>
-            <target>1.4</target>
+            <source>1.5</source>
+            <target>1.5</target>
           </configuration>
         </plugin>
         <plugin>
@@ -264,18 +267,18 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>cobertura-maven-plugin</artifactId>
-        <version>2.2</version>
+        <version>2.4</version>
       </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-javadoc-plugin</artifactId>
-        <version>2.5</version>
+        <version>2.7</version>
         <configuration>
            <tagletArtifacts>
              <tagletArtifact>
                 <groupId>org.apache.maven.plugin-tools</groupId>
                 <artifactId>maven-plugin-tools-javadoc</artifactId>
-                <version>2.4.3</version>
+                <version>2.6</version>
              </tagletArtifact>
              <tagletArtifact>
                <groupId>org.codehaus.plexus</groupId>
@@ -287,4 +290,5 @@
        </plugin>
     </plugins>
   </reporting>
+
 </project>


hooks/post-receive
-- 
Maven build rule execution framework



More information about the pkg-java-commits mailing list