Author: bentmann
Date: Fri Aug 7 12:16:45 2009
New Revision: 801964
URL: http://svn.apache.org/viewvc?rev=801964&view=rev
Log:
[MNG-2690] DefaultPluginManager.getConfiguredMojo() doesn't handle
NoClassDefFoundError correctly
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=801964&r1=801963&r2=801964&view=diff
==============================================================================
---
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
(original)
+++
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
Fri Aug 7 12:16:45 2009
@@ -525,8 +525,23 @@
}
catch ( ComponentLookupException e )
{
+ Throwable cause = e.getCause();
+ while ( cause != null && !( cause instanceof LinkageError )
+ && !( cause instanceof ClassNotFoundException ) )
+ {
+ cause = cause.getCause();
+ }
+
+ if ( ( cause instanceof NoClassDefFoundError ) || ( cause
instanceof ClassNotFoundException ) )
+ {
+ throw new PluginContainerException( mojoDescriptor,
pluginRealm, "Unable to load the mojo '"
+ + mojoDescriptor.getGoal() + "' in the plugin '" +
pluginDescriptor.getId()
+ + "'. A required class is missing: " +
cause.getMessage(), e );
+ }
+
throw new PluginContainerException( mojoDescriptor,
pluginRealm, "Unable to find the mojo '"
- + mojoDescriptor.getGoal() + "' in the plugin '" +
pluginDescriptor.getId() + "'", e );
+ + mojoDescriptor.getGoal() + "' (or one of its required
components) in the plugin '"
+ + pluginDescriptor.getId() + "'", e );
}
if ( mojo instanceof ContextEnabled )