You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/08/07 14:16:45 UTC

svn commit: r801964 - /maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java

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 )