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]