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]