Vincent Siveton wrote:
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.
Well, AFAIK that's not released yet, so I can't use it...
+ 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)
I'm not sure what you mean here. I have specified in the class javadoc
that this class was copied from maven-project-info-reports-plugin, but I
didn't say which class I copied it from.
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]
--
Dennis Lundberg
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]