You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2007/11/14 15:45:07 UTC
svn commit: r594911 - in /maven/enforcer/trunk: ./
enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/
maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/
Author: brianf
Date: Wed Nov 14 06:45:02 2007
New Revision: 594911
URL: http://svn.apache.org/viewvc?rev=594911&view=rev
Log:
MENFORCER-24 new rule to check active profiles
Added:
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java
Modified:
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java
maven/enforcer/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java
maven/enforcer/trunk/pom.xml
Added: maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java?rev=594911&view=auto
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java (added)
+++ maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java Wed Nov 14 06:45:02 2007
@@ -0,0 +1,157 @@
+package org.apache.maven.plugins.enforcer;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+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.model.Profile;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
+import org.codehaus.plexus.util.StringUtils;
+
+/**
+ * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
+ *
+ * This rule checks that the current project is not a
+ * snapshot
+ */
+public class RequireActiveProfile
+ implements EnforcerRule
+{
+
+ /**
+ * Specify a friendly message if the rule fails.
+ *
+ * @parameter
+ */
+ public String message = null;
+
+ /**
+ * Comma separated list of profiles to check
+ */
+ public String profiles = null;
+
+ /**
+ * If all profiles must be active. If false, only one
+ * must be active
+ */
+ public boolean all = true;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.maven.enforcer.rule.api.EnforcerRule#execute(org.apache.maven.enforcer.rule.api.EnforcerRuleHelper)
+ */
+ public void execute ( EnforcerRuleHelper theHelper )
+ throws EnforcerRuleException
+ {
+ List missingProfiles = new ArrayList();
+ try
+ {
+ MavenProject project = (MavenProject) theHelper.evaluate( "${project}" );
+ if ( StringUtils.isNotEmpty( profiles ) )
+ {
+ String[] profs = profiles.split( "," );
+ for ( int i = 0; i < profs.length; i++ )
+ {
+ if ( !isProfileActive( project, profs[i] ) )
+ {
+ missingProfiles.add( profs[i] );
+ }
+ }
+
+ boolean fail = false;
+ if ( !missingProfiles.isEmpty() )
+ {
+ if (all && missingProfiles.size() != profs.length)
+ {
+ fail = true;
+ }
+ else
+ {
+ if (!all && missingProfiles.size() >= (profs.length -1))
+ {
+ fail = true;
+ }
+ }
+ }
+
+ if ( fail )
+ {
+ StringBuffer buf = new StringBuffer();
+ if ( message != null )
+ {
+ buf.append( message + "\n" );
+ }
+
+ Iterator iter = missingProfiles.iterator();
+ while ( iter.hasNext() )
+ {
+ buf.append( "Profile \"" + iter.next().toString() + "\" is not activated.\n" );
+ }
+
+ throw new EnforcerRuleException( buf.toString() );
+ }
+
+ }
+
+ }
+ catch ( ExpressionEvaluationException e )
+ {
+ throw new EnforcerRuleException( "Unable to retrieve the project.", e );
+ }
+
+ }
+
+ protected boolean isProfileActive ( MavenProject project, String profileName )
+ {
+ List activeProfiles = project.getActiveProfiles();
+ if ( activeProfiles != null && !activeProfiles.isEmpty() )
+ {
+ for ( Iterator it = activeProfiles.iterator(); it.hasNext(); )
+ {
+ Profile profile = (Profile) it.next();
+ if ( profile.getId().equals( profileName ) )
+ {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.maven.enforcer.rule.api.EnforcerRule#getCacheId()
+ */
+ public String getCacheId ()
+ {
+ return "0";
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.maven.enforcer.rule.api.EnforcerRule#isCacheable()
+ */
+ public boolean isCacheable ()
+ {
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.maven.enforcer.rule.api.EnforcerRule#isResultValid(org.apache.maven.enforcer.rule.api.EnforcerRule)
+ */
+ public boolean isResultValid ( EnforcerRule theCachedRule )
+ {
+ return false;
+ }
+
+}
Modified: maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java?rev=594911&r1=594910&r2=594911&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java (original)
+++ maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java Wed Nov 14 06:45:02 2007
@@ -1,5 +1,8 @@
package org.apache.maven.plugins.enforcer;
+import java.util.Iterator;
+
+import org.apache.maven.artifact.Artifact;
import org.apache.maven.enforcer.rule.api.EnforcerRule;
import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
@@ -16,6 +19,13 @@
implements EnforcerRule
{
+ /**
+ * Specify a friendly message if the rule fails.
+ *
+ * @parameter
+ */
+ public String message = null;
+
/*
* (non-Javadoc)
*
@@ -27,10 +37,16 @@
try
{
MavenProject project = (MavenProject) theHelper.evaluate( "${project}" );
-
- if(project.getArtifact().isSnapshot())
+
+ if ( project.getArtifact().isSnapshot() )
{
- throw new EnforcerRuleException("This project cannot be a snapshot:"+project.getArtifact().getId());
+ StringBuffer buf = new StringBuffer();
+ if ( message != null )
+ {
+ buf.append( message + "\n" );
+ }
+ buf.append( "This project cannot be a snapshot:" + project.getArtifact().getId() );
+ throw new EnforcerRuleException( buf.toString() );
}
}
catch ( ExpressionEvaluationException e )
Modified: maven/enforcer/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java?rev=594911&r1=594910&r2=594911&view=diff
==============================================================================
--- maven/enforcer/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java (original)
+++ maven/enforcer/trunk/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java Wed Nov 14 06:45:02 2007
@@ -193,12 +193,12 @@
// false if fail is false.
if ( failFast )
{
- throw new MojoExecutionException( currentRule + " failed with message: "
+ throw new MojoExecutionException( currentRule + " failed with message:\n"
+ e.getMessage(), e );
}
else
{
- list.add( "Rule " + i + ": " + currentRule + " failed with message: " + e.getMessage() );
+ list.add( "Rule " + i + ": " + currentRule + " failed with message:\n" + e.getMessage() );
}
}
}
Modified: maven/enforcer/trunk/pom.xml
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/pom.xml?rev=594911&r1=594910&r2=594911&view=diff
==============================================================================
--- maven/enforcer/trunk/pom.xml (original)
+++ maven/enforcer/trunk/pom.xml Wed Nov 14 06:45:02 2007
@@ -176,16 +176,6 @@
<url>scp://people.apache.org/www/maven.apache.org/enforcer/</url>
</site>
</distributionManagement>
- <repositories>
- <repository>
- <releases>
- <enabled>false</enabled>
- </releases>
- <id>codehaus.snapshots</id>
- <name>Codehaus Snapshot Development Repository</name>
- <url>http://snapshots.repository.codehaus.org</url>
- </repository>
- </repositories>
<dependencyManagement>
<dependencies>