Hi Dennis,

2008/2/10, [EMAIL PROTECTED] <[EMAIL PROTECTED]>:
> Author: dennisl
> Date: Sun Feb 10 05:28:36 2008
> New Revision: 620284
>
> URL: http://svn.apache.org/viewvc?rev=620284&view=rev
> Log:
> [MCHANGES-88] NoSuchMethodError with maven 2.0.8 when generating 
> changes-report
> Submitted by: Niall Pemberton
> Reviewed by: Dennis Lundberg
>
> Added:
>     
> maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/AbstractChangesReport.java
>    (with props)
> Modified:
>     
> maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/ChangesMojo.java
>     
> maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/jira/JiraMojo.java
>
> Added: 
> maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/AbstractChangesReport.java
> URL: 
> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/AbstractChangesReport.java?rev=620284&view=auto
> ==============================================================================
> --- 
> maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/AbstractChangesReport.java
>  (added)
> +++ 
> maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/AbstractChangesReport.java
>  Sun Feb 10 05:28:36 2008
> @@ -0,0 +1,221 @@
> +package org.apache.maven.plugin.changes;
> +
> +/*
> + * 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 org.apache.maven.artifact.Artifact;
> +import org.apache.maven.artifact.factory.ArtifactFactory;
> +import org.apache.maven.artifact.repository.ArtifactRepository;
> +import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
> +import org.apache.maven.artifact.resolver.ArtifactResolutionException;
> +import org.apache.maven.artifact.resolver.ArtifactResolver;
> +import 
> org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
> +import org.apache.maven.artifact.versioning.VersionRange;
> +import 
> org.apache.maven.doxia.module.xhtml.decoration.render.RenderingContext;
> +import org.apache.maven.doxia.site.decoration.Body;
> +import org.apache.maven.doxia.site.decoration.DecorationModel;
> +import org.apache.maven.doxia.site.decoration.Skin;
> +import org.apache.maven.doxia.siterenderer.Renderer;
> +import org.apache.maven.doxia.siterenderer.RendererException;
> +import org.apache.maven.doxia.siterenderer.SiteRenderingContext;
> +import org.apache.maven.doxia.siterenderer.sink.SiteRendererSink;
> +import org.apache.maven.plugin.MojoExecutionException;
> +import org.apache.maven.project.MavenProject;
> +import org.apache.maven.reporting.AbstractMavenReport;
> +import org.apache.maven.reporting.MavenReportException;
> +import org.codehaus.plexus.i18n.I18N;
> +
> +import java.io.File;
> +import java.io.FileWriter;
> +import java.io.IOException;
> +import java.io.Writer;
> +import java.util.HashMap;
> +import java.util.Locale;
> +import java.util.Map;
> +
> +/**
> + * Base class with the things that should be in AbstractMavenReport anyway.
> + *
> + * Note: this file was copied from maven-project-info-reports.
> + *
> + * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
> + *
> + */
> +public abstract class AbstractChangesReport
> +    extends AbstractMavenReport
> +{
> +    /**
> +     * Report output directory.
> +     *
> +     * @parameter expression="${project.reporting.outputDirectory}"
> +     * @required
> +     */
> +    protected File outputDirectory;
> +
> +    /**
> +     * Doxia Site Renderer.
> +     *
> +     * @component
> +     */
> +    protected Renderer siteRenderer;
> +
> +    /**
> +     * The Maven Project.
> +     *
> +     * @parameter expression="${project}"
> +     * @required
> +     * @readonly
> +     */
> +    protected MavenProject project;
> +
> +    /**
> +     * Local Repository.
> +     *
> +     * @parameter expression="${localRepository}"
> +     * @required
> +     * @readonly
> +     */
> +    protected ArtifactRepository localRepository;
> +
> +    /**
> +     * @component
> +     */
> +    protected ArtifactResolver resolver;
> +
> +    /**
> +     * @component
> +     */
> +    protected ArtifactFactory factory;
> +
> +    /**
> +     * Internationalization.
> +     *
> +     * @component
> +     */
> +    protected I18N i18n;
> +
> +    private File getSkinArtifactFile()
> +        throws MojoExecutionException
> +    {
> +        Skin skin = Skin.getDefaultSkin();
> +


It seems better to use SiteTool#getDefaultSkinArtifact(
ArtifactRepository localRepository, List remoteArtifactRepositories )
See maven-doxia-tools in shared.


> +        String version = skin.getVersion();
> +        Artifact artifact;
> +        try
> +        {
> +            if ( version == null )
> +            {
> +                version = Artifact.RELEASE_VERSION;
> +            }
> +            VersionRange versionSpec = VersionRange.createFromVersionSpec( 
> version );
> +            artifact = factory.createDependencyArtifact( skin.getGroupId(), 
> skin.getArtifactId(), versionSpec, "jar",
> +                                                         null, null );
> +
> +            resolver.resolve( artifact, 
> project.getRemoteArtifactRepositories(), localRepository );
> +        }
> +        catch ( InvalidVersionSpecificationException e )
> +        {
> +            throw new MojoExecutionException( "The skin version '" + version 
> + "' is not valid: " + e.getMessage() );
> +        }
> +        catch ( ArtifactResolutionException e )
> +        {
> +            throw new MojoExecutionException( "Unable to find skin", e );
> +        }
> +        catch ( ArtifactNotFoundException e )
> +        {
> +            throw new MojoExecutionException( "The skin does not exist: " + 
> e.getMessage() );
> +        }
> +
> +        return artifact.getFile();
> +    }
> +
> +    public void execute()
> +        throws MojoExecutionException
> +    {
> +        if ( !canGenerateReport() )
> +        {
> +            return;
> +        }
> +
> +        // TODO: push to a helper? Could still be improved by taking more of 
> the site information from the site plugin

Specify that it comes from maven-project-info-plugin
AbstractProjectInfoReport class (MNG-3346)

Cheers,

Vincent

> +        try
> +        {
> +            DecorationModel model = new DecorationModel();
> +            model.setBody( new Body() );
> +            Map attributes = new HashMap();
> +            attributes.put( "outputEncoding", "UTF-8" );
> +            Locale locale = Locale.getDefault();
> +            SiteRenderingContext siteContext = 
> siteRenderer.createContextForSkin( getSkinArtifactFile(), attributes,
> +                                                                             
>      model, getName( locale ), locale );
> +
> +            RenderingContext context = new RenderingContext( 
> outputDirectory, getOutputName() + ".html" );
> +
> +            SiteRendererSink sink = new SiteRendererSink( context );
> +            generate( sink, locale );
> +
> +            outputDirectory.mkdirs();
> +
> +            Writer writer = new FileWriter( new File( outputDirectory, 
> getOutputName() + ".html" ) );
> +
> +            siteRenderer.generateDocument( writer, sink, siteContext );
> +
> +            siteRenderer.copyResources( siteContext, new File( 
> project.getBasedir(), "src/site/resources" ),
> +                                        outputDirectory );
> +        }
> +        catch ( RendererException e )
> +        {
> +            throw new MojoExecutionException(
> +                "An error has occurred in " + getName( Locale.ENGLISH ) + " 
> report generation.", e );
> +        }
> +        catch ( IOException e )
> +        {
> +            throw new MojoExecutionException(
> +                "An error has occurred in " + getName( Locale.ENGLISH ) + " 
> report generation.", e );
> +        }
> +        catch ( MavenReportException e )
> +        {
> +            throw new MojoExecutionException(
> +                "An error has occurred in " + getName( Locale.ENGLISH ) + " 
> report generation.", e );
> +        }
> +    }
> +
> +    /**
> +     * @see 
> org.apache.maven.reporting.AbstractMavenReport#getOutputDirectory()
> +     */
> +    protected String getOutputDirectory()
> +    {
> +        return outputDirectory.getAbsolutePath();
> +    }
> +
> +    /**
> +     * @see org.apache.maven.reporting.AbstractMavenReport#getProject()
> +     */
> +    protected MavenProject getProject()
> +    {
> +        return project;
> +    }
> +
> +    /**
> +     * @see org.apache.maven.reporting.AbstractMavenReport#getSiteRenderer()
> +     */
> +    protected Renderer getSiteRenderer()
> +    {
> +        return siteRenderer;
> +    }
> +}
>
> Propchange: 
> maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/AbstractChangesReport.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: 
> maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/AbstractChangesReport.java
> ------------------------------------------------------------------------------
>     svn:keywords = Date Id
>
> Modified: 
> maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/ChangesMojo.java
> URL: 
> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/ChangesMojo.java?rev=620284&r1=620283&r2=620284&view=diff
> ==============================================================================
> --- 
> maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/ChangesMojo.java
>  (original)
> +++ 
> maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/ChangesMojo.java
>  Sun Feb 10 05:28:36 2008
> @@ -21,7 +21,6 @@
>
>  import org.apache.maven.doxia.siterenderer.Renderer;
>  import org.apache.maven.project.MavenProject;
> -import org.apache.maven.reporting.AbstractMavenReport;
>  import org.apache.maven.reporting.MavenReportException;
>  import org.codehaus.plexus.util.FileUtils;
>
> @@ -39,32 +38,9 @@
>   * @version $Id$
>   */
>  public class ChangesMojo
> -    extends AbstractMavenReport
> +    extends AbstractChangesReport
>  {
>      /**
> -     * Directory where reports will go.
> -     *
> -     * @parameter expression="${project.reporting.outputDirectory}"
> -     * @required
> -     * @readonly
> -     */
> -    private File outputDirectory;
> -
> -    /**
> -     * @parameter 
> expression="${component.org.apache.maven.doxia.siterenderer.Renderer}"
> -     * @required
> -     * @readonly
> -     */
> -    private Renderer siteRenderer;
> -
> -    /**
> -     * @parameter expression="${project}"
> -     * @required
> -     * @readonly
> -     */
> -    private MavenProject project;
> -
> -    /**
>       * The path of the changes.xml file that will be converted into an html 
> report.
>       *
>       * @parameter expression="${basedir}/src/changes/changes.xml"
> @@ -153,24 +129,9 @@
>          return getBundle( locale ).getString( "report.changes.description" );
>      }
>
> -    protected Renderer getSiteRenderer()
> -    {
> -        return siteRenderer;
> -    }
> -
> -    protected MavenProject getProject()
> -    {
> -        return project;
> -    }
> -
>      public String getOutputName()
>      {
>          return "changes-report";
> -    }
> -
> -    protected String getOutputDirectory()
> -    {
> -        return outputDirectory.getAbsolutePath();
>      }
>
>      private ResourceBundle getBundle( Locale locale )
>
> Modified: 
> maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/jira/JiraMojo.java
> URL: 
> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/jira/JiraMojo.java?rev=620284&r1=620283&r2=620284&view=diff
> ==============================================================================
> --- 
> maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/jira/JiraMojo.java
>  (original)
> +++ 
> maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/jira/JiraMojo.java
>  Sun Feb 10 05:28:36 2008
> @@ -20,8 +20,8 @@
>   */
>
>  import org.apache.maven.doxia.siterenderer.Renderer;
> +import org.apache.maven.plugin.changes.AbstractChangesReport;
>  import org.apache.maven.project.MavenProject;
> -import org.apache.maven.reporting.AbstractMavenReport;
>  import org.apache.maven.reporting.MavenReportException;
>  import org.apache.maven.settings.Settings;
>
> @@ -37,18 +37,9 @@
>   * @version $Id$
>   */
>  public class JiraMojo
> -    extends AbstractMavenReport
> +    extends AbstractChangesReport
>  {
>      /**
> -     * Output directory where the report will be placed.
> -     *
> -     * @parameter expression="${project.reporting.outputDirectory}"
> -     * @required
> -     * @readonly
> -     */
> -    private File outputDirectory;
> -
> -    /**
>       * Path to the JIRA XML file, which will be parsed.
>       *
>       * @parameter expression="${project.build.directory}/jira-results.xml "
> @@ -58,24 +49,6 @@
>      private File jiraXmlPath;
>
>      /**
> -     * Doxia Site Renderer.
> -     *
> -     * @parameter 
> expression="${component.org.apache.maven.doxia.siterenderer.Renderer}"
> -     * @required
> -     * @readonly
> -     */
> -    private Renderer siteRenderer;
> -
> -    /**
> -     * The Maven Project.
> -     *
> -     * @parameter expression="${project}"
> -     * @required
> -     * @readonly
> -     */
> -    private MavenProject project;
> -
> -    /**
>       * Settings XML configuration.
>       *
>       * @parameter expression="${settings}"
> @@ -307,24 +280,9 @@
>          return getBundle( locale ).getString( "report.jira.description" );
>      }
>
> -    protected Renderer getSiteRenderer()
> -    {
> -        return siteRenderer;
> -    }
> -
> -    protected MavenProject getProject()
> -    {
> -        return project;
> -    }
> -
>      public String getOutputName()
>      {
>          return "jira-report";
> -    }
> -
> -    protected String getOutputDirectory()
> -    {
> -        return outputDirectory.getAbsolutePath();
>      }
>
>      private ResourceBundle getBundle( Locale locale )
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to