You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by br...@apache.org on 2005/06/18 18:21:50 UTC

svn commit: r191298 - /maven/components/trunk/maven-core /maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin /maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project /maven/components/trunk/maven-reports/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle

Author: brett
Date: Sat Jun 18 09:21:49 2005
New Revision: 191298

URL: http://svn.apache.org/viewcvs?rev=191298&view=rev
Log:
PR: MNG-469
configure reports according to spec:
- <reporting> section affects reports run through site and standalone
- <build> section affects reports run standalone and overrides anything already in <reporting>
- command line parameters rule all


Modified:
    maven/components/trunk/maven-core/pom.xml
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManagerException.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
    maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia/DoxiaMojo.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
    maven/components/trunk/maven-reports/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReport.java

Modified: maven/components/trunk/maven-core/pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/pom.xml?rev=191298&r1=191297&r2=191298&view=diff
==============================================================================
--- maven/components/trunk/maven-core/pom.xml (original)
+++ maven/components/trunk/maven-core/pom.xml Sat Jun 18 09:21:49 2005
@@ -14,6 +14,13 @@
       <artifactId>wagon-provider-api</artifactId>
       <version>1.0-alpha-3</version>
     </dependency>
+    <!-- TODO: remove -->
+    <dependency>
+      <groupId>org.apache.maven.reporting</groupId>
+      <artifactId>maven-reporting-api</artifactId>
+      <version>2.0-SNAPSHOT</version>
+      <scope>runtime</scope>
+    </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-monitor</artifactId>

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=191298&r1=191297&r2=191298&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Sat Jun 18 09:21:49 2005
@@ -27,6 +27,7 @@
 import org.apache.maven.artifact.resolver.filter.InversionArtifactFilter;
 import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.model.ReportSet;
 import org.apache.maven.monitor.event.EventDispatcher;
 import org.apache.maven.monitor.event.MavenEvents;
 import org.apache.maven.monitor.logging.DefaultLog;
@@ -349,8 +350,6 @@
     public void executeMojo( MojoExecution mojoExecution, MavenSession session )
         throws ArtifactResolutionException, PluginManagerException, MojoExecutionException
     {
-        PlexusContainer pluginContainer = null;
-
         MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
 
         if ( mojoDescriptor.isDependencyResolutionRequired() != null )
@@ -391,88 +390,24 @@
             }
         }
 
-        Mojo plugin = null;
-
         String goalName = mojoDescriptor.getFullGoalName();
 
-        try
-        {
-            String pluginKey = mojoDescriptor.getPluginDescriptor().getPluginLookupKey();
-
-            pluginContainer = container.getChildContainer( pluginKey );
+        PlexusContainer pluginContainer = getPluginContainer( mojoDescriptor.getPluginDescriptor() );
 
-            if ( pluginContainer == null )
-            {
-                throw new PluginConfigurationException( "Cannot find PlexusContainer for plugin: " + pluginKey );
-            }
-
-            plugin = (Mojo) pluginContainer.lookup( Mojo.ROLE, mojoDescriptor.getRoleHint() );
-            plugin.setLog( mojoLogger );
+        Mojo plugin = null;
 
+        try
+        {
             PluginDescriptor pluginDescriptor = mojoDescriptor.getPluginDescriptor();
-
             String goalId = mojoDescriptor.getGoal();
             String groupId = pluginDescriptor.getGroupId();
             String artifactId = pluginDescriptor.getArtifactId();
             String executionId = mojoExecution.getExecutionId();
             Xpp3Dom dom = session.getProject().getGoalConfiguration( groupId, artifactId, executionId, goalId );
+            Xpp3Dom reportDom = session.getProject().getReportConfiguration( groupId, artifactId, executionId );
+            dom = Xpp3Dom.mergeXpp3Dom( dom, reportDom );
 
-            PlexusConfiguration pomConfiguration;
-            if ( dom == null )
-            {
-                pomConfiguration = new XmlPlexusConfiguration( "configuration" );
-            }
-            else
-            {
-                pomConfiguration = new XmlPlexusConfiguration( dom );
-            }
-
-            // Validate against non-editable (@readonly) parameters, to make sure users aren't trying to
-            // override in the POM.
-            validatePomConfiguration( mojoDescriptor, pomConfiguration );
-
-            PlexusConfiguration mergedConfiguration = mergeConfiguration( pomConfiguration, mojoDescriptor
-                .getMojoConfiguration() );
-
-            // TODO: plexus
-            //            PlexusConfiguration mergedConfiguration = mergeConfiguration( pomConfiguration,
-            //                                                                          mojoDescriptor.getConfiguration() );
-
-            ExpressionEvaluator expressionEvaluator = new PluginParameterExpressionEvaluator( session, pluginDescriptor,
-                                                                                              pathTranslator,
-                                                                                              getLogger() );
-
-            checkRequiredParameters( mojoDescriptor, mergedConfiguration, expressionEvaluator, plugin );
-
-            populatePluginFields( plugin, mojoDescriptor, mergedConfiguration, pluginContainer, expressionEvaluator );
-
-            // !! This is ripe for refactoring to an aspect.
-            // Event monitoring.
-            String event = MavenEvents.MOJO_EXECUTION;
-            EventDispatcher dispatcher = session.getEventDispatcher();
-
-            String goalExecId = goalName;
-
-            if ( mojoExecution.getExecutionId() != null )
-            {
-                goalExecId += " {execution: " + mojoExecution.getExecutionId() + "}";
-            }
-
-            dispatcher.dispatchStart( event, goalExecId );
-            try
-            {
-                plugin.execute();
-
-                dispatcher.dispatchEnd( event, goalExecId );
-            }
-            catch ( MojoExecutionException e )
-            {
-                session.getEventDispatcher().dispatchError( event, goalExecId, e );
-
-                throw e;
-            }
-            // End event monitoring.
-
+            plugin = getConfiguredMojo( pluginContainer, mojoDescriptor, session, dom );
         }
         catch ( PluginConfigurationException e )
         {
@@ -483,6 +418,32 @@
         {
             throw new MojoExecutionException( "Error looking up plugin: ", e );
         }
+
+        // !! This is ripe for refactoring to an aspect.
+        // Event monitoring.
+        String event = MavenEvents.MOJO_EXECUTION;
+        EventDispatcher dispatcher = session.getEventDispatcher();
+
+        String goalExecId = goalName;
+
+        if ( mojoExecution.getExecutionId() != null )
+        {
+            goalExecId += " {execution: " + mojoExecution.getExecutionId() + "}";
+        }
+
+        dispatcher.dispatchStart( event, goalExecId );
+        try
+        {
+            plugin.execute();
+
+            dispatcher.dispatchEnd( event, goalExecId );
+        }
+        catch ( MojoExecutionException e )
+        {
+            session.getEventDispatcher().dispatchError( event, goalExecId, e );
+
+            throw e;
+        }
         finally
         {
             try
@@ -499,6 +460,100 @@
         }
     }
 
+    public List getReports( String groupId, String artifactId, String version, ReportSet reportSet,
+                            MavenSession session )
+        throws PluginManagerException, PluginVersionResolutionException, PluginConfigurationException
+    {
+        PluginDescriptor pluginDescriptor = getPluginDescriptor( groupId, artifactId, version );
+
+        PlexusContainer pluginContainer = getPluginContainer( pluginDescriptor );
+
+        List reports = new ArrayList();
+        for ( Iterator i = pluginDescriptor.getMojos().iterator(); i.hasNext(); )
+        {
+            MojoDescriptor mojoDescriptor = (MojoDescriptor) i.next();
+
+            // TODO: check ID is correct for reports
+            // TODO: this returns mojos that aren't reports
+            // if the POM configured no reports, give all from plugin
+            if ( reportSet == null || reportSet.getReports().contains( mojoDescriptor.getGoal() ) )
+            {
+                try
+                {
+                    String id = null;
+                    if ( reportSet != null )
+                    {
+                        id = reportSet.getId();
+                    }
+                    MojoExecution mojoExecution = new MojoExecution( mojoDescriptor, id );
+
+                    String executionId = mojoExecution.getExecutionId();
+                    Xpp3Dom dom = session.getProject().getReportConfiguration( groupId, artifactId, executionId );
+
+                    reports.add( getConfiguredMojo( pluginContainer, mojoDescriptor, session, dom ) );
+                }
+                catch ( ComponentLookupException e )
+                {
+                    throw new PluginManagerException( "Error looking up plugin: ", e );
+                }
+            }
+        }
+        return reports;
+    }
+
+    private PlexusContainer getPluginContainer( PluginDescriptor pluginDescriptor )
+        throws PluginManagerException
+    {
+        String pluginKey = pluginDescriptor.getPluginLookupKey();
+
+        PlexusContainer pluginContainer = container.getChildContainer( pluginKey );
+
+        if ( pluginContainer == null )
+        {
+            throw new PluginManagerException( "Cannot find PlexusContainer for plugin: " + pluginKey );
+        }
+        return pluginContainer;
+    }
+
+    private Mojo getConfiguredMojo( PlexusContainer pluginContainer, MojoDescriptor mojoDescriptor,
+                                    MavenSession session, Xpp3Dom dom )
+        throws ComponentLookupException, PluginConfigurationException
+    {
+        Mojo plugin = (Mojo) pluginContainer.lookup( Mojo.ROLE, mojoDescriptor.getRoleHint() );
+        plugin.setLog( mojoLogger );
+
+        PluginDescriptor pluginDescriptor = mojoDescriptor.getPluginDescriptor();
+
+        PlexusConfiguration pomConfiguration;
+        if ( dom == null )
+        {
+            pomConfiguration = new XmlPlexusConfiguration( "configuration" );
+        }
+        else
+        {
+            pomConfiguration = new XmlPlexusConfiguration( dom );
+        }
+
+        // Validate against non-editable (@readonly) parameters, to make sure users aren't trying to
+        // override in the POM.
+        validatePomConfiguration( mojoDescriptor, pomConfiguration );
+
+        PlexusConfiguration mergedConfiguration = mergeConfiguration( pomConfiguration, mojoDescriptor
+            .getMojoConfiguration() );
+
+        // TODO: plexus
+        //            PlexusConfiguration mergedConfiguration = mergeConfiguration( pomConfiguration,
+        //                                                                          mojoDescriptor.getConfiguration() );
+
+        ExpressionEvaluator expressionEvaluator = new PluginParameterExpressionEvaluator( session, pluginDescriptor,
+                                                                                          pathTranslator, getLogger() );
+
+        checkRequiredParameters( mojoDescriptor, mergedConfiguration, expressionEvaluator, plugin );
+
+        populatePluginFields( plugin, mojoDescriptor, mergedConfiguration, pluginContainer, expressionEvaluator );
+        return plugin;
+    }
+
     private void checkRequiredParameters( MojoDescriptor goal, PlexusConfiguration configuration,
                                           ExpressionEvaluator expressionEvaluator, Mojo plugin )
         throws PluginConfigurationException
@@ -816,8 +871,9 @@
     public void initialize()
     {
         // TODO: configure this from bootstrap or scan lib
+        // TODO: remove doxia
         artifactFilter = new ExclusionSetFilter(
-            new String[]{"classworlds", "maven-artifact", "maven-core", "maven-model", "maven-monitor", "maven-plugin-api", "maven-plugin-descriptor", "maven-project", "maven-settings", "plexus-container-default", "plexus-utils", "wagon-provider-api", "wagon-ssh", "wagon-http-lightweight", "wagon-file"} );
+            new String[]{"classworlds", "maven-artifact", "maven-core", "maven-model", "maven-monitor", "maven-plugin-api", "maven-plugin-descriptor", "maven-project", "maven-settings", "plexus-container-default", "plexus-utils", "wagon-provider-api", "wagon-ssh", "wagon-http-lightweight", "wagon-file", "doxia-core", "maven-reporting-api"} );
     }
 
     // ----------------------------------------------------------------------

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java?rev=191298&r1=191297&r2=191298&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java Sat Jun 18 09:21:49 2005
@@ -23,6 +23,10 @@
 import org.apache.maven.plugin.version.PluginVersionResolutionException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.settings.Settings;
+import org.apache.maven.model.ReportSet;
+
+import java.util.Collection;
+import java.util.List;
 
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl </a>
@@ -38,6 +42,9 @@
     PluginDescriptor verifyPlugin( String prefix );
 
     PluginDescriptor verifyPlugin( String groupId, String artifactId, String version, MavenProject project,
-                                  Settings settings, ArtifactRepository localRepository )
+                                   Settings settings, ArtifactRepository localRepository )
         throws ArtifactResolutionException, PluginManagerException, PluginVersionResolutionException;
+
+    List getReports( String groupId, String artifactId, String version, ReportSet reportSet, MavenSession session )
+        throws PluginManagerException, PluginVersionResolutionException, PluginConfigurationException;
 }

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManagerException.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManagerException.java?rev=191298&r1=191297&r2=191298&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManagerException.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManagerException.java Sat Jun 18 09:21:49 2005
@@ -25,6 +25,11 @@
 public class PluginManagerException
     extends Exception
 {
+    public PluginManagerException( String message )
+    {
+        super( message );
+    }
+
     public PluginManagerException( String message, Exception e )
     {
         super( message, e );

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java?rev=191298&r1=191297&r2=191298&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java Sat Jun 18 09:21:49 2005
@@ -84,6 +84,10 @@
         {
             value = context.getLocalRepository();
         }
+        else if ( expression.equals( "session" ) )
+        {
+            value = context;
+        }
         else if ( expression.equals( "project" ) )
         {
             value = context.getProject();

Modified: maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia/DoxiaMojo.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia/DoxiaMojo.java?rev=191298&r1=191297&r2=191298&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia/DoxiaMojo.java (original)
+++ maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia/DoxiaMojo.java Sat Jun 18 09:21:49 2005
@@ -18,8 +18,11 @@
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.model.ReportSet;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.PluginConfigurationException;
 import org.apache.maven.plugin.PluginManager;
 import org.apache.maven.plugin.PluginManagerException;
 import org.apache.maven.plugin.version.PluginVersionResolutionException;
@@ -37,13 +40,6 @@
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringInputStream;
 import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.PlexusContainerLocator;
-import org.codehaus.plexus.context.Context;
-import org.codehaus.plexus.context.ContextException;
-import org.codehaus.plexus.PlexusConstants;
-import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -74,12 +70,11 @@
  */
 public class DoxiaMojo
     extends AbstractMojo
-    implements Contextualizable
 {
     private static final String RESOURCE_DIR = "org/apache/maven/doxia";
 
     private static final String DEFAULT_TEMPLATE = RESOURCE_DIR + "/maven-site.vm";
-    
+
     /**
      * @parameter expression="${settings}"
      * @required
@@ -167,11 +162,11 @@
     private ArtifactRepository localRepository;
 
     /**
-     * @parameter expression="${project.remoteArtifactRepositories}"
+     * @parameter expression="${session}"
      * @required
      * @readonly
      */
-    private List remoteRepositories;
+    private MavenSession session;
 
     private List projectInfos = new ArrayList();
 
@@ -181,8 +176,6 @@
 
     private List localesList = new ArrayList();
 
-    private PlexusContainer container;
-
     public void execute()
         throws MojoExecutionException
     {
@@ -208,7 +201,7 @@
             }
         }
 
-        Map reports = getReports();
+        List reports = getReports();
 
         try
         {
@@ -243,13 +236,11 @@
                 //Generate reports
                 if ( reports != null )
                 {
-                    for ( Iterator j = reports.keySet().iterator(); j.hasNext(); )
+                    for ( Iterator j = reports.iterator(); j.hasNext(); )
                     {
-                        String reportKey = (String) j.next();
-
-                        getLog().info( "Generate " + reportKey + " report." );
+                        MavenReport report = (MavenReport) j.next();
 
-                        MavenReport report = (MavenReport) reports.get( reportKey );
+                        getLog().info( "Generate " + report.getName( locale ) + " report." );
 
                         report.setConfiguration( config );
 
@@ -340,10 +331,10 @@
         }
     }
 
-    private void categorizeReports( Map reports )
+    private void categorizeReports( List reports )
         throws MojoExecutionException
     {
-        for ( Iterator i = reports.values().iterator(); i.hasNext(); )
+        for ( Iterator i = reports.iterator(); i.hasNext(); )
         {
             MavenReport report = (MavenReport) i.next();
             if ( MavenReport.CATEGORY_PROJECT_INFORMATION.equals( report.getCategoryName() ) )
@@ -356,8 +347,9 @@
             }
             else
             {
-                throw new MojoExecutionException( "'" + report.getCategoryName() + "' category define for " +
-                                                  report.getName( defaultLocale ) + " mojo isn't valid." );
+                throw new MojoExecutionException(
+                    "'" + report.getCategoryName() + "' category define for " + report.getName( defaultLocale ) +
+                        " mojo isn't valid." );
             }
         }
     }
@@ -366,20 +358,22 @@
     {
         StringBuffer buffer = new StringBuffer();
         buffer.append( "<menu name=\"Project Documentation\">\n" );
-        buffer.append( "    <item name=\"" + i18n.getString( "site-plugin", locale, "report.menu.about" ) + " " +
-                       project.getName() + "\" href=\"/index.html\"/>\n" );
+        buffer.append(
+            "    <item name=\"" + i18n.getString( "site-plugin", locale, "report.menu.about" ) + " " +
+                project.getName() + "\" href=\"/index.html\"/>\n" );
 
         if ( projectInfos.size() > 0 )
         {
-            buffer.append( "    <item name=\"" +
-                           i18n.getString( "site-plugin", locale, "report.menu.projectinformation" ) +
-                           "\" href=\"/project-info.html\" collapse=\"true\">\n" );
+            buffer.append(
+                "    <item name=\"" + i18n.getString( "site-plugin", locale, "report.menu.projectinformation" ) +
+                    "\" href=\"/project-info.html\" collapse=\"true\">\n" );
 
             for ( Iterator i = projectInfos.iterator(); i.hasNext(); )
             {
                 MavenReport report = (MavenReport) i.next();
-                buffer.append( "        <item name=\"" + report.getName( locale ) + "\" href=\"/" +
-                               report.getOutputName() + ".html\"/>\n" );
+                buffer.append(
+                    "        <item name=\"" + report.getName( locale ) + "\" href=\"/" + report.getOutputName() +
+                        ".html\"/>\n" );
             }
 
             buffer.append( "    </item>\n" );
@@ -387,14 +381,16 @@
 
         if ( projectReports.size() > 0 )
         {
-            buffer.append( "    <item name=\"" + i18n.getString( "site-plugin", locale, "report.menu.projectreports" ) +
-                           "\" href=\"/maven-reports.html\" collapse=\"true\">\n" );
+            buffer.append(
+                "    <item name=\"" + i18n.getString( "site-plugin", locale, "report.menu.projectreports" ) +
+                    "\" href=\"/maven-reports.html\" collapse=\"true\">\n" );
 
             for ( Iterator i = projectReports.iterator(); i.hasNext(); )
             {
                 MavenReport report = (MavenReport) i.next();
-                buffer.append( "        <item name=\"" + report.getName( locale ) + "\" href=\"/" +
-                               report.getOutputName() + ".html\"/>\n" );
+                buffer.append(
+                    "        <item name=\"" + report.getName( locale ) + "\" href=\"/" + report.getOutputName() +
+                        ".html\"/>\n" );
             }
 
             buffer.append( "    </item>\n" );
@@ -408,7 +404,7 @@
     /**
      * @todo should only be needed once
      */
-    private InputStream getSiteDescriptor( Map reports, Locale locale )
+    private InputStream getSiteDescriptor( List reports, Locale locale )
         throws MojoExecutionException
     {
         File siteDescriptor = new File( siteDirectory, "site.xml" );
@@ -632,8 +628,8 @@
 
                 if ( is == null )
                 {
-                    throw new IOException( "The resource " + line + " doesn't exists in " + DEFAULT_TEMPLATE +
-                                           " template." );
+                    throw new IOException(
+                        "The resource " + line + " doesn't exists in " + DEFAULT_TEMPLATE + " template." );
                 }
 
                 File outputFile = new File( outputDirectory, line );
@@ -712,7 +708,7 @@
         }
     }
 
-    private Map getReports()
+    private List getReports()
         throws MojoExecutionException
     {
         // TODO: not the best solution. Perhaps a mojo tag that causes the plugin manager to populate project reports instead?
@@ -721,18 +717,21 @@
 
         if ( project.getModel().getReports() != null )
         {
-            getLog().error( "DEPRECATED: Plugin contains a <reports/> section: this is IGNORED - please use <reporting/> instead.");
+            getLog().error(
+                "DEPRECATED: Plugin contains a <reports/> section: this is IGNORED - please use <reporting/> instead." );
         }
-        
+
+        List reports = new ArrayList();
         if ( reportPlugins != null )
         {
             for ( Iterator it = reportPlugins.iterator(); it.hasNext(); )
             {
                 org.apache.maven.model.ReportPlugin reportPlugin = (org.apache.maven.model.ReportPlugin) it.next();
+
                 try
                 {
-                    pluginManager.verifyPlugin( reportPlugin.getGroupId(), reportPlugin.getArtifactId(), reportPlugin.getVersion(),
-                                                project, settings, localRepository );
+                    pluginManager.verifyPlugin( reportPlugin.getGroupId(), reportPlugin.getArtifactId(),
+                                                reportPlugin.getVersion(), project, settings, localRepository );
                 }
                 catch ( ArtifactResolutionException e )
                 {
@@ -746,27 +745,43 @@
                 {
                     throw new MojoExecutionException( "Cannot find report plugin", e );
                 }
-            }
-        }
 
-        // TODO: this is not good (using the container), also because it will import every report ever loaded
-        //   What we need is to be able to select individual reports and know what reports are inside a plugin
-        //   It may be better to push the report section in the pom back to "plugins", then just have a reports list
-        //   again which are role hints to look up
+                try
+                {
+                    List reportSets = reportPlugin.getReportSets();
+                    if ( reportSets == null || reportSets.isEmpty() )
+                    {
+                        reports.addAll(
+                            pluginManager.getReports( reportPlugin.getGroupId(), reportPlugin.getArtifactId(),
+                                                      reportPlugin.getVersion(), null, session ) );
 
-        try
-        {
-            return container.lookupMap( MavenReport.ROLE );
-        }
-        catch ( ComponentLookupException e )
-        {
-            throw new MojoExecutionException( "Unable to find reports", e );
-        }
-    }
+                    }
+                    else
+                    {
+                        for ( Iterator j = reportSets.iterator(); j.hasNext(); )
+                        {
+                            ReportSet reportSet = (ReportSet) j.next();
 
-    public void contextualize( Context context )
-        throws ContextException
-    {
-        container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
+                            reports.addAll(
+                                pluginManager.getReports( reportPlugin.getGroupId(), reportPlugin.getArtifactId(),
+                                                          reportPlugin.getVersion(), reportSet, session ) );
+                        }
+                    }
+                }
+                catch ( PluginManagerException e )
+                {
+                    throw new MojoExecutionException( "Error getting reports", e );
+                }
+                catch ( PluginVersionResolutionException e )
+                {
+                    throw new MojoExecutionException( "Error getting reports", e );
+                }
+                catch ( PluginConfigurationException e )
+                {
+                    throw new MojoExecutionException( "Error getting reports", e );
+                }
+            }
+        }
+        return reports;
     }
 }

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java?rev=191298&r1=191297&r2=191298&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java Sat Jun 18 09:21:49 2005
@@ -38,6 +38,8 @@
 import org.apache.maven.model.Reporting;
 import org.apache.maven.model.Scm;
 import org.apache.maven.model.PluginExecution;
+import org.apache.maven.model.ReportPlugin;
+import org.apache.maven.model.ReportSet;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 import java.io.File;
@@ -924,6 +926,53 @@
                         if ( execution != null )
                         {
                             Xpp3Dom executionConfiguration = (Xpp3Dom) execution.getConfiguration();
+                            if ( executionConfiguration != null )
+                            {
+                                Xpp3Dom newDom = new Xpp3Dom( executionConfiguration );
+                                dom = Xpp3Dom.mergeXpp3Dom( newDom, dom );
+                            }
+                        }
+                    }
+                    break;
+                }
+            }
+        }
+
+        if ( dom != null )
+        {
+            // make a copy so the original in the POM doesn't get messed with
+            dom = new Xpp3Dom( dom );
+        }
+
+        return dom;
+    }
+
+    public Xpp3Dom getReportConfiguration( String pluginGroupId, String pluginArtifactId, String reportSetId )
+    {
+        Xpp3Dom dom = null;
+
+        // ----------------------------------------------------------------------
+        // I would like to be able to lookup the Mojo object using a key but
+        // we have a limitation in modello that will be remedied shortly. So
+        // for now I have to iterate through and see what we have.
+        // ----------------------------------------------------------------------
+
+        if ( getReportPlugins() != null )
+        {
+            for ( Iterator iterator = getReportPlugins().iterator(); iterator.hasNext(); )
+            {
+                ReportPlugin plugin = (ReportPlugin) iterator.next();
+
+                if ( pluginGroupId.equals( plugin.getGroupId() ) && pluginArtifactId.equals( plugin.getArtifactId() ) )
+                {
+                    dom = (Xpp3Dom) plugin.getConfiguration();
+
+                    if ( reportSetId != null )
+                    {
+                        ReportSet reportSet = (ReportSet) plugin.getReportSetsAsMap().get( reportSetId );
+                        if ( reportSet != null )
+                        {
+                            Xpp3Dom executionConfiguration = (Xpp3Dom) reportSet.getConfiguration();
                             if ( executionConfiguration != null )
                             {
                                 Xpp3Dom newDom = new Xpp3Dom( executionConfiguration );

Modified: maven/components/trunk/maven-reports/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReport.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-reports/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReport.java?rev=191298&r1=191297&r2=191298&view=diff
==============================================================================
--- maven/components/trunk/maven-reports/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReport.java (original)
+++ maven/components/trunk/maven-reports/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReport.java Sat Jun 18 09:21:49 2005
@@ -76,6 +76,9 @@
 
     private String extraFormatter = "plain";
 
+    /**
+     * @parameter expression="${resultFileName}"
+     */
     private String resultFileName = "checkstyle-result.txt";
 
     private String packageNamesFile;



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org