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 );