Author: brianf Date: Wed May 28 19:46:40 2008 New Revision: 661187 URL: http://svn.apache.org/viewvc?rev=661187&view=rev Log: MENFORCER-43 patch from Jacob Robertson to make the snapshots rule able to be applied when the main artifact is a release only.
Modified: maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java Modified: maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java?rev=661187&r1=661186&r2=661187&view=diff ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java (original) +++ maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java Wed May 28 19:46:40 2008 @@ -24,7 +24,10 @@ import org.apache.maven.artifact.Artifact; 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.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException; // TODO: Auto-generated Javadoc /** @@ -38,7 +41,47 @@ { /** - * Checks the set of dependencies to see if any snapshots are included. + * Allows this rule to execute only when this project is a release. + * + * @parameter + */ + public boolean onlyWhenRelease = false; + + /** + * Override parent to allow optional ignore of this rule. + */ + public void execute( EnforcerRuleHelper helper ) + throws EnforcerRuleException + { + boolean callSuper; + if ( onlyWhenRelease ) + { + // get the project + MavenProject project = null; + try + { + project = (MavenProject) helper.evaluate( "${project}" ); + } + catch ( ExpressionEvaluationException eee ) + { + throw new EnforcerRuleException( "Unable to retrieve the MavenProject: ", eee ); + } + + // only call super if this project is a release + callSuper = !project.getArtifact().isSnapshot(); + } + else + { + callSuper = true; + } + if ( callSuper ) + { + super.execute(helper); + } + } + + /** + * Checks the set of dependencies to see if any snapshots are included * * @param dependencies the dependencies * @param log the log Modified: maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java?rev=661187&r1=661186&r2=661187&view=diff ============================================================================== --- maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java (original) +++ maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java Wed May 28 19:46:40 2008 @@ -58,7 +58,20 @@ 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 ); + } /** * Test id.