You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by vs...@apache.org on 2008/03/01 16:53:19 UTC

svn commit: r632607 - in /maven/plugin-tools/trunk: maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/ maven-plugin-tools-api/ maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/ maven-plugin-tools-api/src/main/...

Author: vsiveton
Date: Sat Mar  1 07:53:18 2008
New Revision: 632607

URL: http://svn.apache.org/viewvc?rev=632607&view=rev
Log:
MPLUGIN-80: Detection of report goals always fails due to class loader separation

o improved PluginUtils#isMavenReport() to take car of project classloader
o added test case

Added:
    maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/stubs/
    maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/stubs/MavenReportStub.java   (with props)
    maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/stubs/MojoStub.java   (with props)
Modified:
    maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/PluginReport.java
    maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/XdocGeneratorMojo.java
    maven/plugin-tools/trunk/maven-plugin-tools-api/pom.xml
    maven/plugin-tools/trunk/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java
    maven/plugin-tools/trunk/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/util/PluginUtils.java
    maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/PluginUtilsTest.java

Modified: maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/PluginReport.java
URL: http://svn.apache.org/viewvc/maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/PluginReport.java?rev=632607&r1=632606&r2=632607&view=diff
==============================================================================
--- maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/PluginReport.java (original)
+++ maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/PluginReport.java Sat Mar  1 07:53:18 2008
@@ -219,7 +219,7 @@
             File outputDir = new File( getOutputDirectory() );
             outputDir.mkdirs();
 
-            PluginXdocGenerator generator = new PluginXdocGenerator( locale );
+            PluginXdocGenerator generator = new PluginXdocGenerator( project, locale );
             generator.execute( outputDir, pluginDescriptor );
         }
         catch ( IOException e )
@@ -289,7 +289,7 @@
             {
                 MojoDescriptor mojo = (MojoDescriptor) i.next();
 
-                if ( PluginUtils.isMavenReport( mojo.getImplementation() ) )
+                if ( PluginUtils.isMavenReport( mojo.getImplementation(), project ) )
                 {
                     hasMavenReport = true;
                 }
@@ -337,7 +337,7 @@
                 tableCell( createLinkPatternedText( goalName, goalDocumentationLink ) );
                 if ( hasMavenReport )
                 {
-                    if ( PluginUtils.isMavenReport( mojo.getImplementation() ) )
+                    if ( PluginUtils.isMavenReport( mojo.getImplementation(), project ) )
                     {
                         sink.tableCell();
                         iconValid( locale );

Modified: maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/XdocGeneratorMojo.java
URL: http://svn.apache.org/viewvc/maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/XdocGeneratorMojo.java?rev=632607&r1=632606&r2=632607&view=diff
==============================================================================
--- maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/XdocGeneratorMojo.java (original)
+++ maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/XdocGeneratorMojo.java Sat Mar  1 07:53:18 2008
@@ -51,6 +51,6 @@
     /** {@inheritDoc} */
     protected Generator createGenerator()
     {
-        return new PluginXdocGenerator();
+        return new PluginXdocGenerator( project );
     }
 }

Modified: maven/plugin-tools/trunk/maven-plugin-tools-api/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugin-tools/trunk/maven-plugin-tools-api/pom.xml?rev=632607&r1=632606&r2=632607&view=diff
==============================================================================
--- maven/plugin-tools/trunk/maven-plugin-tools-api/pom.xml (original)
+++ maven/plugin-tools/trunk/maven-plugin-tools-api/pom.xml Sat Mar  1 07:53:18 2008
@@ -76,5 +76,25 @@
       <artifactId>jtidy</artifactId>
       <version>4aug2000r7-dev</version>
     </dependency>
+
+    <!-- test -->
+    <dependency>
+      <groupId>org.apache.maven.reporting</groupId>
+      <artifactId>maven-reporting-impl</artifactId>
+      <version>2.0.4</version>
+      <scope>test</scope>
+      <exclusions>
+        <!-- Using org.codehaus.plexus:plexus-utils instead of -->
+        <exclusion>
+          <groupId>plexus</groupId>
+          <artifactId>plexus-utils</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.shared</groupId>
+      <artifactId>maven-plugin-testing-harness</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>

Modified: maven/plugin-tools/trunk/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java
URL: http://svn.apache.org/viewvc/maven/plugin-tools/trunk/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java?rev=632607&r1=632606&r2=632607&view=diff
==============================================================================
--- maven/plugin-tools/trunk/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java (original)
+++ maven/plugin-tools/trunk/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java Sat Mar  1 07:53:18 2008
@@ -35,6 +35,7 @@
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
 import org.apache.maven.plugin.descriptor.Parameter;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.project.MavenProject;
 import org.apache.maven.tools.plugin.util.PluginUtils;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringInputStream;
@@ -53,19 +54,35 @@
 {
     private final Locale locale;
 
+    private final MavenProject project;
+
     /**
      * Default constructor using <code>Locale.ENGLISH</code> as locale.
+     * Used only in test cases.
      */
     public PluginXdocGenerator()
     {
+        this.project = null;
+        this.locale = Locale.ENGLISH;
+    }
+
+    /**
+     * Constructor using <code>Locale.ENGLISH</code> as locale.
+     *
+     * @param project not null Maven project.
+     */
+    public PluginXdocGenerator( MavenProject project )
+    {
+        this.project = project;
         this.locale = Locale.ENGLISH;
     }
 
     /**
      * @param locale not null wanted locale.
      */
-    public PluginXdocGenerator( Locale locale )
+    public PluginXdocGenerator( MavenProject project, Locale locale )
     {
+        this.project = project;
         if ( locale == null )
         {
             this.locale = Locale.ENGLISH;
@@ -182,7 +199,7 @@
 
     private void writeReportNotice( MojoDescriptor mojoDescriptor, XMLWriter w )
     {
-        if ( PluginUtils.isMavenReport( mojoDescriptor.getImplementation() ) )
+        if ( PluginUtils.isMavenReport( mojoDescriptor.getImplementation(), project ) )
         {
             w.startElement( "p" );
             w.writeMarkup( "<strong>" + getBundle( locale ).getString( "pluginxdoc.mojodescriptor.notice.note" )

Modified: maven/plugin-tools/trunk/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/util/PluginUtils.java
URL: http://svn.apache.org/viewvc/maven/plugin-tools/trunk/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/util/PluginUtils.java?rev=632607&r1=632606&r2=632607&view=diff
==============================================================================
--- maven/plugin-tools/trunk/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/util/PluginUtils.java (original)
+++ maven/plugin-tools/trunk/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/util/PluginUtils.java Sat Mar  1 07:53:18 2008
@@ -19,12 +19,19 @@
  * under the License.
  */
 
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 
+import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.project.MavenProject;
 import org.apache.maven.reporting.MavenReport;
 import org.codehaus.plexus.component.repository.ComponentDependency;
 import org.codehaus.plexus.util.DirectoryScanner;
@@ -153,37 +160,61 @@
     }
 
     /**
-     * @param impl a Mojo implementation
+     * @param impl a Mojo implementation, not null
+     * @param project a MavenProject instance, could be null
      * @return <code>true</code> is the Mojo implementation implements <code>MavenReport</code>,
      * <code>false</code> otherwise.
+     * @throws IllegalArgumentException if any
      */
-    public static boolean isMavenReport( String impl )
+    public static boolean isMavenReport( String impl, MavenProject project )
     {
         if ( impl == null )
         {
             throw new IllegalArgumentException( "mojo implementation should be declared" );
         }
 
-        Object mojo = null;
-        try
+        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+        if ( project != null )
         {
-            Class clazz = Class.forName( impl );
-            mojo = clazz.newInstance();
-        }
-        catch ( ClassNotFoundException e )
-        {
-            return false;
+            List classPathStrings;
+            try
+            {
+                classPathStrings = project.getCompileClasspathElements();
+            }
+            catch ( DependencyResolutionRequiredException e )
+            {
+                throw new IllegalArgumentException( e );
+            }
+
+            List urls = new ArrayList( classPathStrings.size() );
+            for ( Iterator it = classPathStrings.iterator(); it.hasNext(); )
+            {
+                try
+                {
+                    urls.add( new File( ( (String) it.next() ) ).toURL() );
+                }
+                catch ( MalformedURLException e )
+                {
+                    throw new IllegalArgumentException( e );
+                }
+            }
+
+            URLClassLoader projectClassLoader = new URLClassLoader( (URL[]) urls.toArray( new URL[urls.size()] ),
+                                                                    classLoader );
+            classLoader = projectClassLoader;
         }
-        catch ( InstantiationException e )
+
+        Class clazz = null;
+        try
         {
-            return false;
+            clazz = Class.forName( impl, false, classLoader );
         }
-        catch ( IllegalAccessException e )
+        catch ( ClassNotFoundException e )
         {
             return false;
         }
 
-        if ( ( mojo != null ) && ( mojo instanceof MavenReport ) )
+        if ( MavenReport.class.isAssignableFrom( clazz ) )
         {
             return true;
         }

Modified: maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/PluginUtilsTest.java
URL: http://svn.apache.org/viewvc/maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/PluginUtilsTest.java?rev=632607&r1=632606&r2=632607&view=diff
==============================================================================
--- maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/PluginUtilsTest.java (original)
+++ maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/PluginUtilsTest.java Sat Mar  1 07:53:18 2008
@@ -19,8 +19,9 @@
  * under the License.
  */
 
-import junit.framework.TestCase;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.plugin.testing.AbstractMojoTestCase;
+import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
 import org.codehaus.plexus.component.repository.ComponentDependency;
 import org.codehaus.plexus.util.xml.CompactXMLWriter;
 import org.codehaus.plexus.util.xml.XMLWriter;
@@ -32,9 +33,8 @@
  * @author jdcasey
  */
 public class PluginUtilsTest
-    extends TestCase
+    extends AbstractMojoTestCase
 {
-
     public void testShouldTrimArtifactIdToFindPluginId()
     {
         assertEquals( "artifactId", PluginDescriptor.getGoalPrefixFromArtifactId( "maven-artifactId-plugin" ) );
@@ -64,9 +64,9 @@
 
         String output = sWriter.toString();
 
-        String pattern = "<dependencies>" + "<dependency>" + "<groupId>testGroupId</groupId>" +
-            "<artifactId>testArtifactId</artifactId>" + "<type>pom</type>" + "<version>0.0.0</version>" +
-            "</dependency>" + "</dependencies>";
+        String pattern = "<dependencies>" + "<dependency>" + "<groupId>testGroupId</groupId>"
+            + "<artifactId>testArtifactId</artifactId>" + "<type>pom</type>" + "<version>0.0.0</version>"
+            + "</dependency>" + "</dependencies>";
 
         assertEquals( pattern, output );
     }
@@ -96,4 +96,26 @@
         assertEquals( 1, files.length );
     }
 
+    public void testIsMavenReport()
+        throws Exception
+    {
+        try
+        {
+            PluginUtils.isMavenReport( null, null );
+        }
+        catch ( IllegalArgumentException e )
+        {
+            assertTrue( true );
+        }
+
+        String impl = "org.apache.maven.tools.plugin.util.stubs.MavenReportStub";
+
+        MavenProjectStub stub = new MavenProjectStub();
+        stub.setCompileSourceRoots( Collections.singletonList( getBasedir() + "/target/classes" ) );
+
+        assertTrue( PluginUtils.isMavenReport( impl, stub ) );
+
+        impl = "org.apache.maven.tools.plugin.util.stubs.MojoStub";
+        assertFalse( PluginUtils.isMavenReport( impl, stub ) );
+    }
 }

Added: maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/stubs/MavenReportStub.java
URL: http://svn.apache.org/viewvc/maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/stubs/MavenReportStub.java?rev=632607&view=auto
==============================================================================
--- maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/stubs/MavenReportStub.java (added)
+++ maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/stubs/MavenReportStub.java Sat Mar  1 07:53:18 2008
@@ -0,0 +1,197 @@
+package org.apache.maven.tools.plugin.util.stubs;
+
+/*
+ * 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.
+ */
+
+import java.io.File;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.maven.doxia.siterenderer.Renderer;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.reporting.AbstractMavenReport;
+import org.apache.maven.reporting.MavenReportException;
+import org.codehaus.doxia.sink.Sink;
+
+/**
+ * Dummy report.
+ *
+ * @goal dummyReport
+ * @version $Id$
+ */
+public class MavenReportStub
+    extends AbstractMavenReport
+{
+    /** {@inheritDoc} */
+    public boolean canGenerateReport()
+    {
+        return super.canGenerateReport();
+    }
+
+    /** {@inheritDoc} */
+    protected void closeReport()
+    {
+        super.closeReport();
+    }
+
+    /** {@inheritDoc} */
+    public void execute()
+        throws MojoExecutionException
+    {
+        super.execute();
+    }
+
+    /** {@inheritDoc} */
+    protected void executeReport( Locale locale )
+        throws MavenReportException
+    {
+
+    }
+
+    /** {@inheritDoc} */
+    public void generate( Sink sink, Locale locale )
+        throws MavenReportException
+    {
+        super.generate( sink, locale );
+    }
+
+    /** {@inheritDoc} */
+    public String getCategoryName()
+    {
+        return super.getCategoryName();
+    }
+
+    /** {@inheritDoc} */
+    protected String getOutputDirectory()
+    {
+        return null;
+    }
+
+    /** {@inheritDoc} */
+    protected MavenProject getProject()
+    {
+        return null;
+    }
+
+    /** {@inheritDoc} */
+    public File getReportOutputDirectory()
+    {
+        return super.getReportOutputDirectory();
+    }
+
+    /** {@inheritDoc} */
+    public org.apache.maven.doxia.sink.Sink getSink()
+    {
+        return super.getSink();
+    }
+
+    /** {@inheritDoc} */
+    protected Renderer getSiteRenderer()
+    {
+        return null;
+    }
+
+    /** {@inheritDoc} */
+    public boolean isExternalReport()
+    {
+        return super.isExternalReport();
+    }
+
+    /** {@inheritDoc} */
+    public void setReportOutputDirectory( File reportOutputDirectory )
+    {
+        super.setReportOutputDirectory( reportOutputDirectory );
+    }
+
+    /** {@inheritDoc} */
+    public Log getLog()
+    {
+        return super.getLog();
+    }
+
+    /** {@inheritDoc} */
+    public Map getPluginContext()
+    {
+        return super.getPluginContext();
+    }
+
+    /** {@inheritDoc} */
+    public void setLog( Log log )
+    {
+        super.setLog( log );
+    }
+
+    /** {@inheritDoc} */
+    public void setPluginContext( Map pluginContext )
+    {
+        super.setPluginContext( pluginContext );
+    }
+
+    /** {@inheritDoc} */
+    public String getDescription( Locale locale )
+    {
+        return null;
+    }
+
+    /** {@inheritDoc} */
+    public String getName( Locale locale )
+    {
+        return null;
+    }
+
+    /** {@inheritDoc} */
+    public String getOutputName()
+    {
+        return null;
+    }
+
+    /** {@inheritDoc} */
+    protected Object clone()
+        throws CloneNotSupportedException
+    {
+        return super.clone();
+    }
+
+    /** {@inheritDoc} */
+    public boolean equals( Object obj )
+    {
+        return super.equals( obj );
+    }
+
+    /** {@inheritDoc} */
+    protected void finalize()
+        throws Throwable
+    {
+        super.finalize();
+    }
+
+    /** {@inheritDoc} */
+    public int hashCode()
+    {
+        return super.hashCode();
+    }
+
+    /** {@inheritDoc} */
+    public String toString()
+    {
+        return super.toString();
+    }
+}

Propchange: maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/stubs/MavenReportStub.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/stubs/MavenReportStub.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/stubs/MojoStub.java
URL: http://svn.apache.org/viewvc/maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/stubs/MojoStub.java?rev=632607&view=auto
==============================================================================
--- maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/stubs/MojoStub.java (added)
+++ maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/stubs/MojoStub.java Sat Mar  1 07:53:18 2008
@@ -0,0 +1,100 @@
+package org.apache.maven.tools.plugin.util.stubs;
+
+/*
+ * 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.
+ */
+
+import java.util.Map;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugin.logging.Log;
+
+/**
+ * Dummy Mojo.
+ *
+ * @goal dummy
+ * @version $Id$
+ */
+public class MojoStub
+    extends AbstractMojo
+{
+    /** {@inheritDoc} */
+    public Log getLog()
+    {
+        return super.getLog();
+    }
+
+    /** {@inheritDoc} */
+    public Map getPluginContext()
+    {
+        return super.getPluginContext();
+    }
+
+    /** {@inheritDoc} */
+    public void setLog( Log log )
+    {
+        super.setLog( log );
+    }
+
+    /** {@inheritDoc} */
+    public void setPluginContext( Map pluginContext )
+    {
+        super.setPluginContext( pluginContext );
+    }
+
+    /** {@inheritDoc} */
+    protected Object clone()
+        throws CloneNotSupportedException
+    {
+        return super.clone();
+    }
+
+    /** {@inheritDoc} */
+    public boolean equals( Object obj )
+    {
+        return super.equals( obj );
+    }
+
+    /** {@inheritDoc} */
+    protected void finalize()
+        throws Throwable
+    {
+        super.finalize();
+    }
+
+    /** {@inheritDoc} */
+    public int hashCode()
+    {
+        return super.hashCode();
+    }
+
+    /** {@inheritDoc} */
+    public String toString()
+    {
+        return super.toString();
+    }
+
+    /** {@inheritDoc} */
+    public void execute()
+        throws MojoExecutionException, MojoFailureException
+    {
+
+    }
+}

Propchange: maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/stubs/MojoStub.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugin-tools/trunk/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/util/stubs/MojoStub.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"