You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2007/02/20 02:30:58 UTC

svn commit: r509403 - in /maven/sandbox/plugins/maven-enforcer-plugin: pom.xml src/main/java/org/apache/maven/plugin/enforcer/MavenMojo.java

Author: brianf
Date: Mon Feb 19 17:30:57 2007
New Revision: 509403

URL: http://svn.apache.org/viewvc?view=rev&rev=509403
Log:
initial mavenVersion mojo

Modified:
    maven/sandbox/plugins/maven-enforcer-plugin/pom.xml
    maven/sandbox/plugins/maven-enforcer-plugin/src/main/java/org/apache/maven/plugin/enforcer/MavenMojo.java

Modified: maven/sandbox/plugins/maven-enforcer-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/plugins/maven-enforcer-plugin/pom.xml?view=diff&rev=509403&r1=509402&r2=509403
==============================================================================
--- maven/sandbox/plugins/maven-enforcer-plugin/pom.xml (original)
+++ maven/sandbox/plugins/maven-enforcer-plugin/pom.xml Mon Feb 19 17:30:57 2007
@@ -22,7 +22,7 @@
 	<parent>
 		<artifactId>maven-plugins</artifactId>
 		<groupId>org.apache.maven.plugins</groupId>
-		<version>8-SNAPSHOT</version>
+		<version>7</version>
 	</parent>
 	<groupId>org.apache.maven.plugins</groupId>
 	<artifactId>maven-enforcer-plugin</artifactId>
@@ -145,17 +145,27 @@
 		<dependency>
 			<groupId>org.apache.maven</groupId>
 			<artifactId>maven-artifact</artifactId>
-			<version>2.0.4</version>
+			<version>2.0.5</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.maven</groupId>
 			<artifactId>maven-plugin-api</artifactId>
-			<version>2.0.4</version>
+			<version>2.0.5</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.maven</groupId>
 			<artifactId>maven-project</artifactId>
-			<version>2.0.4</version>
+			<version>2.0.5</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.maven</groupId>
+			<artifactId>maven-core</artifactId>
+			<version>2.0.5</version>
+		</dependency>
+		<dependency>
+			<groupId>org.codehaus.plexus</groupId>
+			<artifactId>plexus-utils</artifactId>
+			<version>1.4-alpha-1</version>
 		</dependency>
 	</dependencies>
 </project>

Modified: maven/sandbox/plugins/maven-enforcer-plugin/src/main/java/org/apache/maven/plugin/enforcer/MavenMojo.java
URL: http://svn.apache.org/viewvc/maven/sandbox/plugins/maven-enforcer-plugin/src/main/java/org/apache/maven/plugin/enforcer/MavenMojo.java?view=diff&rev=509403&r1=509402&r2=509403
==============================================================================
--- maven/sandbox/plugins/maven-enforcer-plugin/src/main/java/org/apache/maven/plugin/enforcer/MavenMojo.java (original)
+++ maven/sandbox/plugins/maven-enforcer-plugin/src/main/java/org/apache/maven/plugin/enforcer/MavenMojo.java Mon Feb 19 17:30:57 2007
@@ -19,23 +19,86 @@
  * under the License.
  */
 
+import org.apache.maven.artifact.versioning.ArtifactVersion;
+import org.apache.maven.artifact.versioning.VersionRange;
+import org.apache.maven.execution.RuntimeInformation;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.logging.Log;
+import org.codehaus.plexus.util.StringUtils;
 
 /**
- * Goal which fails the build if Maven isn't the correct version
- *
- * @goal maven
+ * Goal which fails the build if Maven isn't the correct mavenVersion
  * 
+ * @goal maven
+ * @author Brian Fox
  * @phase process-sources
  */
 public class MavenMojo
     extends AbstractMojo
 {
+    /**
+     * Used to look up Artifacts in the remote repository.
+     * 
+     * @parameter expression="${component.org.apache.maven.execution.RuntimeInformation}"
+     * @required
+     * @readonly
+     */
+    protected RuntimeInformation rti;
+
+    /**
+     * Specify the required Version of Maven.
+     * Some examples are
+     * <ul>
+     *   <li><code>2.0.4</code> Version 2.0.4</li>
+     *   <li><code>[2.0,2.1)</code> Versions 2.0 (included) to 2.1 (not included)</li>
+     *   <li><code>[2.0,2.1]</code> Versions 2.0 to 2.1 (both included)</li>
+     *   <li><code>[2.0.5,)</code> Versions 2.0.5 and higher</li>
+     *   <li><code>(,2.0.5],[2.1.1,)</code> Versions up to 2.0.5 (included) and 2.1.1 or higher</li>
+     * </ul>
+     * 
+     * @parameter expression="${enforcer.maven.version}" default-value=""
+     * @required
+     */
+    private String mavenVersion = null;
+
+    /**
+     * Flag to warn only if the mavenVersion check fails.
+     * 
+     * @parameter expression="${enforcer.maven.warn}" default-value="false"
+     */
+    private boolean warn = false;
 
     public void execute()
         throws MojoExecutionException
     {
-    
+        if (StringUtils.isEmpty(this.mavenVersion))
+        {
+            throw new MojoExecutionException("MavenVersion can't be empty.");
+        }
+        
+        ArtifactVersion version = rti.getApplicationVersion();
+        VersionRange vr;
+        
+        vr = VersionRange.createFromVersion(this.mavenVersion);
+        
+        Log log = this.getLog();
+        String msg = "Detected Maven Version: "+ version;
+        if (vr.containsVersion(version))
+        {
+            log.debug(msg+" is allowed.");
+        }
+        else
+        {
+            String error = msg+" is not in the allowed range: "+vr;
+            if (warn)
+            {
+                log.warn(error);
+            }
+            else
+            {
+                throw new MojoExecutionException(error);
+            }
+        }
     }
 }