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 2008/08/06 02:13:22 UTC
svn commit: r683054 - in /maven/enforcer/trunk/enforcer-rules/src:
main/java/org/apache/maven/plugins/enforcer/ site/apt/
test/java/org/apache/maven/plugins/enforcer/
Author: brianf
Date: Tue Aug 5 17:13:22 2008
New Revision: 683054
URL: http://svn.apache.org/viewvc?rev=683054&view=rev
Log:
MENFORCER-37: optionally enforce that the parent is not a snapshot. Adapted from patch by Nick Stolwijk
Added:
maven/enforcer/trunk/enforcer-rules/src/site/apt/requireReleaseVersion.apt
Modified:
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java
maven/enforcer/trunk/enforcer-rules/src/site/apt/requireReleaseDeps.apt
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestNoSnapshots.java
maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseVersion.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=683054&r1=683053&r2=683054&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 Tue Aug 5 17:13:22 2008
@@ -48,24 +48,24 @@
public boolean onlyWhenRelease = false;
/**
+ * Allows this rule to fail when the parent is defined as a snapshot.
+ *
+ * @parameter
+ */
+ public boolean failWhenParentIsSnapshot = true;
+
+ /**
* Override parent to allow optional ignore of this rule.
*/
public void execute( EnforcerRuleHelper helper )
throws EnforcerRuleException
{
boolean callSuper;
+ MavenProject project = null;
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 );
- }
+ project = getProject( helper );
// only call super if this project is a release
callSuper = !project.getArtifact().isSnapshot();
@@ -76,16 +76,46 @@
}
if ( callSuper )
{
- super.execute(helper);
+ super.execute( helper );
+ if ( failWhenParentIsSnapshot )
+ {
+ if ( project == null )
+ {
+ project = getProject( helper );
+ }
+ Artifact parentArtifact = project.getParentArtifact();
+ if ( parentArtifact != null && parentArtifact.isSnapshot() )
+ {
+ throw new EnforcerRuleException( "Parent Cannot be a snapshot: " + parentArtifact.getId() );
+ }
+ }
}
}
/**
- * Checks the set of dependencies to see if any snapshots are included.
+ * @param helper
+ * @return
+ * @throws EnforcerRuleException
+ */
+ private MavenProject getProject( EnforcerRuleHelper helper )
+ throws EnforcerRuleException
+ {
+ try
+ {
+ return (MavenProject) helper.evaluate( "${project}" );
+ }
+ catch ( ExpressionEvaluationException eee )
+ {
+ throw new EnforcerRuleException( "Unable to retrieve the MavenProject: ", eee );
+ }
+ }
+
+ /**
+ * Checks the set of dependencies to see if any snapshots are included
*
- * @param dependencies the dependencies to check
+ * @param dependencies the dependencies
* @param log the log
- * @return a set containing snapshot artifacts found
+ * @return the sets the
* @throws EnforcerRuleException the enforcer rule exception
*/
protected Set checkDependencies( Set dependencies, Log log )
@@ -93,10 +123,10 @@
{
Set foundExcludes = new HashSet();
- Iterator dependencyIter = dependencies.iterator();
- while ( dependencyIter.hasNext() )
+ Iterator DependencyIter = dependencies.iterator();
+ while ( DependencyIter.hasNext() )
{
- Artifact artifact = (Artifact) dependencyIter.next();
+ Artifact artifact = (Artifact) DependencyIter.next();
if ( artifact.isSnapshot() )
{
@@ -106,4 +136,24 @@
return foundExcludes;
}
+
+ public boolean isOnlyWhenRelease()
+ {
+ return onlyWhenRelease;
+ }
+
+ public void setOnlyWhenRelease( boolean onlyWhenRelease )
+ {
+ this.onlyWhenRelease = onlyWhenRelease;
+ }
+
+ public boolean isFailWhenParentIsSnapshot()
+ {
+ return failWhenParentIsSnapshot;
+ }
+
+ public void setFailWhenParentIsSnapshot( boolean failWhenParentIsSnapshot )
+ {
+ this.failWhenParentIsSnapshot = failWhenParentIsSnapshot;
+ }
}
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=683054&r1=683053&r2=683054&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 Tue Aug 5 17:13:22 2008
@@ -18,6 +18,7 @@
*/
package org.apache.maven.plugins.enforcer;
+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.project.MavenProject;
@@ -33,6 +34,13 @@
extends AbstractNonCacheableEnforcerRule
{
+ /**
+ * Allows this rule to fail when the parent is defined as a snapshot.
+ *
+ * @parameter
+ */
+ public boolean failWhenParentIsSnapshot = true;
+
/*
* (non-Javadoc)
*
@@ -41,25 +49,55 @@
public void execute( EnforcerRuleHelper theHelper )
throws EnforcerRuleException
{
- try
- {
- MavenProject project = (MavenProject) theHelper.evaluate( "${project}" );
- if ( project.getArtifact().isSnapshot() )
+ MavenProject project = getProject( theHelper );
+
+ if ( project.getArtifact().isSnapshot() )
+ {
+ StringBuffer buf = new StringBuffer();
+ if ( message != null )
{
- 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() );
+ buf.append( message + "\n" );
}
+ buf.append( "This project cannot be a snapshot:" + project.getArtifact().getId() );
+ throw new EnforcerRuleException( buf.toString() );
}
- catch ( ExpressionEvaluationException e )
+ if ( failWhenParentIsSnapshot )
{
- throw new EnforcerRuleException( "Unable to retrieve the project.", e );
+ Artifact parentArtifact = project.getParentArtifact();
+ if ( parentArtifact != null && parentArtifact.isSnapshot() )
+ {
+ throw new EnforcerRuleException( "Parent Cannot be a snapshot: " + parentArtifact.getId() );
+ }
}
}
+
+ /**
+ * @param helper
+ * @return
+ * @throws EnforcerRuleException
+ */
+ private MavenProject getProject( EnforcerRuleHelper helper )
+ throws EnforcerRuleException
+ {
+ try
+ {
+ return (MavenProject) helper.evaluate( "${project}" );
+ }
+ catch ( ExpressionEvaluationException eee )
+ {
+ throw new EnforcerRuleException( "Unable to retrieve the MavenProject: ", eee );
+ }
+ }
+
+ public boolean isFailWhenParentIsSnapshot()
+ {
+ return failWhenParentIsSnapshot;
+ }
+
+ public void setFailWhenParentIsSnapshot( boolean failWhenParentIsSnapshot )
+ {
+ this.failWhenParentIsSnapshot = failWhenParentIsSnapshot;
+ }
}
Modified: maven/enforcer/trunk/enforcer-rules/src/site/apt/requireReleaseDeps.apt
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/requireReleaseDeps.apt?rev=683054&r1=683053&r2=683054&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/site/apt/requireReleaseDeps.apt (original)
+++ maven/enforcer/trunk/enforcer-rules/src/site/apt/requireReleaseDeps.apt Tue Aug 5 17:13:22 2008
@@ -23,17 +23,19 @@
November 2007
------
-Require Release Dependencies
+Require Release Version
- This rule checks the dependencies and fails if any snapshots are found.
+ This rule checks that the current project is not a snapshot.
The following parameters are supported by this rule:
- * searchTransitive - if transitive dependencies should be checked.
-
* 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
+
[]
@@ -56,9 +58,9 @@
</goals>
<configuration>
<rules>
- <requireReleaseDeps>
+ <requireReleaseVersion>
<message>No Snapshots Allowed!</message>
- </requireReleaseDeps>
+ </requireReleaseVersion>
</rules>
<fail>true</fail>
</configuration>
@@ -69,4 +71,4 @@
</build>
[...]
</project>
-+---+
\ No newline at end of file
++---+
Added: maven/enforcer/trunk/enforcer-rules/src/site/apt/requireReleaseVersion.apt
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/site/apt/requireReleaseVersion.apt?rev=683054&view=auto
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/site/apt/requireReleaseVersion.apt (added)
+++ maven/enforcer/trunk/enforcer-rules/src/site/apt/requireReleaseVersion.apt Tue Aug 5 17:13:22 2008
@@ -0,0 +1,76 @@
+~~ 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
+ ------
+ November 2007
+ ------
+
+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>
++---+
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=683054&r1=683053&r2=683054&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 Tue Aug 5 17:13:22 2008
@@ -44,6 +44,7 @@
public void testRule()
throws IOException
{
+
ArtifactStubFactory factory = new ArtifactStubFactory();
MockProject project = new MockProject();
EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
@@ -71,6 +72,19 @@
project.setArtifact( factory.getReleaseArtifact() );
TestEnforcerRuleUtils.execute( rule, helper, true );
+
+ MockProject parent = new MockProject();
+ parent.setArtifact( factory.getSnapshotArtifact() );
+ project.setParent( parent );
+ helper = EnforcerTestUtils.getHelper(project);
+
+ rule.setFailWhenParentIsSnapshot( true );
+ TestEnforcerRuleUtils.execute( rule, helper, true );
+
+ rule.setFailWhenParentIsSnapshot( false );
+ TestEnforcerRuleUtils.execute( rule, helper, false );
+
+
}
/**
Modified: maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseVersion.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseVersion.java?rev=683054&r1=683053&r2=683054&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseVersion.java (original)
+++ maven/enforcer/trunk/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseVersion.java Tue Aug 5 17:13:22 2008
@@ -58,6 +58,17 @@
project.setArtifact( factory.getSnapshotArtifact() );
TestEnforcerRuleUtils.execute( rule, helper, true );
+
+ 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 );
}