You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by pg...@apache.org on 2012/05/09 02:07:59 UTC
svn commit: r1335846 -
/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
Author: pgier
Date: Wed May 9 00:07:59 2012
New Revision: 1335846
URL: http://svn.apache.org/viewvc?rev=1335846&view=rev
Log:
[MENFORCER-98] Check for API differences between Maven 2 and 3
Patch Submitted by: Jeff Maury
o Applied with some minor changes
Modified:
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
Modified: maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java?rev=1335846&r1=1335845&r2=1335846&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java (original)
+++ maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java Wed May 9 00:07:59 2012
@@ -21,6 +21,7 @@ package org.apache.maven.plugins.enforce
import java.io.File;
import java.io.IOException;
+import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -128,7 +129,7 @@ public class RequirePluginVersions
private Map phaseToLifecycleMap;
/** The lifecycles. */
- private List lifecycles;
+ private Collection lifecycles;
/** The factory. */
ArtifactFactory factory;
@@ -169,21 +170,21 @@ public class RequirePluginVersions
project = (MavenProject) helper.evaluate( "${project}" );
LifecycleExecutor life;
life = (LifecycleExecutor) helper.getComponent( LifecycleExecutor.class );
- try
- {
- lifecycles = (List) ReflectionUtils.getValueIncludingSuperclasses( "lifecycles", life );
+
+ // The lifecycle API changed from Maven 2 to 3 so we have to do a hack to figure
+ // out which one we're using.
+ Field field = ReflectionUtils.getFieldByNameIncludingSuperclasses( "defaultLifeCycles", life.getClass() );
+ if (field != null) // Using Maven 3
+ {
+ Object defaultLifeCycles = ReflectionUtils.getValueIncludingSuperclasses("defaultLifeCycles", life);
+ Map lifecyclesMap = (Map)ReflectionUtils.getValueIncludingSuperclasses("lifecycles", defaultLifeCycles);
+ lifecycles = lifecyclesMap.values();
}
- catch (Exception e)
+ else // Using Maven 2
{
- log.info( "The requirePluginVersions rule is currently not compatible with Maven3.");
- /*
- *
- * NOTE: If this happens, we're bailing out right away.
- *
- *
- */
- return;
+ lifecycles = (Collection) ReflectionUtils.getValueIncludingSuperclasses( "lifecycles", life );
}
+
session = (MavenSession) helper.evaluate( "${session}" );
pluginManager = (PluginManager) helper.getComponent( PluginManager.class );
factory = (ArtifactFactory) helper.getComponent( ArtifactFactory.class );