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/07 06:41:56 UTC

svn commit: r188690 - /maven/components/trunk/maven-core /maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle /maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin /maven/components/trunk/maven-plugins/maven-site-plugin /maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia

Author: brett
Date: Mon Jun  6 21:41:54 2005
New Revision: 188690

URL: http://svn.apache.org/viewcvs?rev=188690&view=rev
Log:
PR: MNG-366
reverse the reference. DoxiaMojo depends on maven-core instead of maven-core depending on the reporting api + doxia

This is not a great solution, but it gets us closer. It is currently not possible, as before, to get the correct set of reports as they are all loaded into the one container and then everything found is returned.

Modified:
    maven/components/trunk/maven-core/pom.xml
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
    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/PluginParameterExpressionEvaluator.java
    maven/components/trunk/maven-plugins/maven-site-plugin/pom.xml
    maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia/DoxiaMojo.java

Modified: maven/components/trunk/maven-core/pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/pom.xml?rev=188690&r1=188689&r2=188690&view=diff
==============================================================================
--- maven/components/trunk/maven-core/pom.xml (original)
+++ maven/components/trunk/maven-core/pom.xml Mon Jun  6 21:41:54 2005
@@ -54,23 +54,18 @@
       <artifactId>maven-plugin-descriptor</artifactId>
       <version>2.0-SNAPSHOT</version>
     </dependency>
+<!-- TODO: remove
     <dependency>
       <groupId>org.apache.maven.reporting</groupId>
       <artifactId>maven-reporting-api</artifactId>
       <version>2.0-SNAPSHOT</version>
     </dependency>
+-->
     <dependency>
       <groupId>commons-cli</groupId>
       <artifactId>commons-cli</artifactId>
       <version>1.0-beta-2</version>
     </dependency>
-    <!-- TODO: only here for classloader issues. It used to work when the script classes were inside the component factory...
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-script-beanshell</artifactId>
-      <version>2.0-SNAPSHOT</version>
-      <scope>runtime</scope>
-    </dependency> -->
     <dependency>
       <groupId>plexus</groupId>
       <artifactId>plexus-container-default</artifactId>

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=188690&r1=188689&r2=188690&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Mon Jun  6 21:41:54 2005
@@ -234,14 +234,15 @@
         PluginDescriptor pluginDescriptor;
         try
         {
-            pluginDescriptor = pluginManager.verifyPlugin( groupId, artifactId, version, session );
+            pluginDescriptor = pluginManager.verifyPlugin( groupId, artifactId, version, session.getProject(),
+                                                           session.getLocalRepository() );
         }
         catch ( PluginManagerException e )
         {
             throw new LifecycleExecutionException( "Internal error in the plugin manager", e );
         }
-        
-        if( plugin.isInheritanceApplied() || pluginDescriptor.isInheritedByDefault() )
+
+        if ( plugin.isInheritanceApplied() || pluginDescriptor.isInheritedByDefault() )
         {
             // ----------------------------------------------------------------------
             // Look to see if the plugin configuration specifies particular mojos
@@ -250,7 +251,7 @@
             // ----------------------------------------------------------------------
 
             Map goalMap = plugin.getGoalsAsMap();
-            
+
             if ( pluginDescriptor.getMojos() != null )
             {
                 for ( Iterator j = pluginDescriptor.getMojos().iterator(); j.hasNext(); )
@@ -263,17 +264,17 @@
                         throw new LifecycleExecutionException(
                             "The plugin " + artifactId + " was built with an older version of Maven" );
                     }
-                
+
                     Goal goal = (Goal) goalMap.get( mojoDescriptor.getGoal() );
 
-                    if( goalMap.isEmpty() )
+                    if ( goalMap.isEmpty() )
                     {
                         configureMojoPhaseBinding( mojoDescriptor, phaseMap, session.getSettings() );
                     }
                     else if ( goal != null )
                     {
                         // We have to check to see that the inheritance rules have been applied before binding this mojo.
-                        if( goal.isInheritanceApplied() || mojoDescriptor.isInheritedByDefault() )
+                        if ( goal.isInheritanceApplied() || mojoDescriptor.isInheritedByDefault() )
                         {
                             configureMojoPhaseBinding( mojoDescriptor, phaseMap, session.getSettings() );
                         }
@@ -405,7 +406,9 @@
             {
                 injectHandlerPluginConfiguration( session.getProject(), groupId, artifactId, version );
 
-                pluginDescriptor = pluginManager.verifyPlugin( groupId, artifactId, version, session );
+                pluginDescriptor =
+                    pluginManager.verifyPlugin( groupId, artifactId, version, session.getProject(),
+                                                session.getLocalRepository() );
             }
             catch ( PluginManagerException e )
             {
@@ -434,7 +437,7 @@
         }
         else
         {
-            throw new LifecycleExecutionException( "The plugin " + pluginDescriptor.getGroupId() + ":" + 
+            throw new LifecycleExecutionException( "The plugin " + pluginDescriptor.getGroupId() + ":" +
                                                    pluginDescriptor.getArtifactId() + ":" +
                                                    pluginDescriptor.getVersion() +
                                                    " doesn't contain any mojo. Check if it isn't corrupted." );

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=188690&r1=188689&r2=188690&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 Mon Jun  6 21:41:54 2005
@@ -18,6 +18,7 @@
 
 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.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
@@ -26,6 +27,7 @@
 import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
 import org.apache.maven.artifact.transform.ReleaseArtifactTransformation;
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.model.Plugin;
 import org.apache.maven.monitor.event.EventDispatcher;
 import org.apache.maven.monitor.event.MavenEvents;
 import org.apache.maven.monitor.logging.DefaultLog;
@@ -173,22 +175,22 @@
         return getPluginDescriptor( prefix );
     }
 
-    public PluginDescriptor verifyPlugin( String groupId, String artifactId, String version, MavenSession session )
+    public PluginDescriptor verifyPlugin( String groupId, String artifactId, String version, MavenProject project,
+                                          ArtifactRepository localRepository )
         throws ArtifactResolutionException, PluginManagerException
     {
 
         String pluginKey = groupId + ":" + artifactId;
-        
+
         // TODO: this should be possibly outside
         if ( version == null )
         {
-            MavenProject project = session.getProject();
 
-            org.apache.maven.model.Plugin pluginConfig = null;
+            Plugin pluginConfig = null;
 
             for ( Iterator it = project.getBuildPlugins().iterator(); it.hasNext(); )
             {
-                org.apache.maven.model.Plugin plugin = (org.apache.maven.model.Plugin) it.next();
+                Plugin plugin = (Plugin) it.next();
 
                 if ( groupId.equals( plugin.getGroupId() ) && artifactId.equals( plugin.getArtifactId() ) )
                 {
@@ -202,7 +204,7 @@
             {
                 for ( Iterator it = project.getReports().getPlugins().iterator(); it.hasNext(); )
                 {
-                    org.apache.maven.model.Plugin plugin = (org.apache.maven.model.Plugin) it.next();
+                    Plugin plugin = (Plugin) it.next();
 
                     if ( groupId.equals( plugin.getGroupId() ) && artifactId.equals( plugin.getArtifactId() ) )
                     {
@@ -235,7 +237,7 @@
                                                                           Artifact.SCOPE_RUNTIME,
                                                                           MojoDescriptor.MAVEN_PLUGIN, null );
 
-                addPlugin( pluginKey, pluginArtifact, session );
+                addPlugin( pluginKey, pluginArtifact, project, localRepository );
 
                 version = pluginArtifact.getBaseVersion();
             }
@@ -265,7 +267,8 @@
         return getPluginDescriptor( groupId, artifactId, version );
     }
 
-    protected void addPlugin( String pluginKey, Artifact pluginArtifact, MavenSession session )
+    protected void addPlugin( String pluginKey, Artifact pluginArtifact, MavenProject project,
+                              ArtifactRepository localRepository )
         throws ArtifactResolutionException, ComponentLookupException, PlexusContainerException
     {
         ArtifactResolver artifactResolver = null;
@@ -280,7 +283,7 @@
             MavenMetadataSource metadataSource = new MavenMetadataSource( artifactResolver, mavenProjectBuilder );
 
             ArtifactResolutionResult result = artifactResolver.resolveTransitively(
-                Collections.singleton( pluginArtifact ), session.getRemoteRepositories(), session.getLocalRepository(),
+                Collections.singleton( pluginArtifact ), project.getRemoteArtifactRepositories(), localRepository,
                 metadataSource, artifactFilter );
 
             Map resolved = result.getArtifacts();
@@ -771,13 +774,12 @@
     public void initialize()
     {
         // TODO: configure this from bootstrap or scan lib
-        artifactFilter = new ExclusionSetFilter( new String[]{/*"bsh",*/ "classworlds", "doxia-core", "maven-artifact",
+        artifactFilter = new ExclusionSetFilter( new String[]{"classworlds", /*"doxia-core",*/ "maven-artifact",
                                                               "maven-core", "maven-model", "maven-monitor",
                                                               "maven-plugin-api", "maven-plugin-descriptor",
-                                                              "maven-project", "maven-reporting-api",
-                                                              /*"maven-script-beanshell", */"maven-settings",
-                                                              /*"plexus-bsh-factory", */"plexus-container-default",
-                                                              "plexus-utils", "wagon-provider-api"} );
+                                                              "maven-project", /*"maven-reporting-api",*/ "maven-settings",
+                                                              "plexus-container-default", "plexus-utils",
+                                                              "wagon-provider-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=188690&r1=188689&r2=188690&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 Mon Jun  6 21:41:54 2005
@@ -16,10 +16,12 @@
  * limitations under the License.
  */
 
+import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.project.MavenProject;
 
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl </a>
@@ -34,6 +36,7 @@
 
     PluginDescriptor verifyPlugin( String prefix );
 
-    PluginDescriptor verifyPlugin( String groupId, String artifactId, String version, MavenSession session )
+    PluginDescriptor verifyPlugin( String groupId, String artifactId, String version, MavenProject project,
+                                   ArtifactRepository localRepository )
         throws ArtifactResolutionException, PluginManagerException;
 }

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=188690&r1=188689&r2=188690&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 Mon Jun  6 21:41:54 2005
@@ -16,20 +16,14 @@
  * limitations under the License.
  */
 
-import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.project.path.PathTranslator;
-import org.apache.maven.reporting.MavenReport;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
-import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.introspection.ReflectionValueExtractor;
 
 import java.io.File;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
 
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
@@ -82,52 +76,7 @@
             return expression;
         }
 
-        if ( expression.equals( "reports" ) )
-        {
-            String role = PluginManager.ROLE;
-            try
-            {
-                PluginManager pluginManager = (PluginManager) context.lookup( role );
-                List reportPlugins = context.getProject().getReportPlugins();
-                if ( reportPlugins != null )
-                {
-                    for ( Iterator it = reportPlugins.iterator(); it.hasNext(); )
-                    {
-                        org.apache.maven.model.Plugin plugin = (org.apache.maven.model.Plugin) it.next();
-                        pluginManager.verifyPlugin( plugin.getGroupId(), plugin.getArtifactId(), plugin.getVersion(),
-                                                    context );
-                    }
-                }
-            }
-            catch ( ComponentLookupException cle )
-            {
-                throw new ExpressionEvaluationException( "Cannot lookup component: " + role + ".", cle );
-            }
-            catch ( ArtifactResolutionException are )
-            {
-                throw new ExpressionEvaluationException( "Cannot resolve component: " + role + ".", are );
-            }
-            catch ( PluginManagerException pme )
-            {
-                throw new ExpressionEvaluationException( "Cannot verify component: " + role + ".", pme );
-            }
-
-            role = MavenReport.ROLE;
-            try
-            {
-                value = context.lookupMap( role );
-                for ( Iterator i = ( (Map) value ).keySet().iterator(); i.hasNext(); )
-                {
-                    String key = (String) i.next();
-                    logger.debug( key + " report is found." );
-                }
-            }
-            catch ( ComponentLookupException cle )
-            {
-                throw new ExpressionEvaluationException( "Cannot lookup component: " + role + ".", cle );
-            }
-        }
-        else if ( expression.equals( "localRepository" ) )
+        if ( expression.equals( "localRepository" ) )
         {
             value = context.getLocalRepository();
         }

Modified: maven/components/trunk/maven-plugins/maven-site-plugin/pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-site-plugin/pom.xml?rev=188690&r1=188689&r2=188690&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-site-plugin/pom.xml (original)
+++ maven/components/trunk/maven-plugins/maven-site-plugin/pom.xml Mon Jun  6 21:41:54 2005
@@ -11,6 +11,11 @@
   <name>Maven Site plugin</name>
   <dependencies>
     <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-core</artifactId>
+      <version>2.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
       <groupId>org.apache.maven.reporting</groupId>
       <artifactId>maven-reporting-api</artifactId>
       <version>2.0-SNAPSHOT</version>

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=188690&r1=188689&r2=188690&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 Mon Jun  6 21:41:54 2005
@@ -17,8 +17,11 @@
  */
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.PluginManager;
+import org.apache.maven.plugin.PluginManagerException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.reporting.MavenReport;
 import org.apache.maven.reporting.MavenReportConfiguration;
@@ -32,6 +35,13 @@
 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;
@@ -53,15 +63,16 @@
 import java.util.StringTokenizer;
 
 /**
- * @goal site
- * @description Doxia plugin
- * @requiresDependencyResolution test
+ * Generate the project site.
  *
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
  * @version $Id$
+ * @goal site
+ * @requiresDependencyResolution test
  */
 public class DoxiaMojo
     extends AbstractMojo
+    implements Contextualizable
 {
     private static final String RESOURCE_DIR = "org/apache/maven/doxia";
 
@@ -133,11 +144,11 @@
     private MavenProject project;
 
     /**
-     * @parameter expression="${reports}"
+     * @parameter expression="${component.org.apache.maven.plugin.PluginManager}"
      * @required
      * @readonly
      */
-    private Map reports;
+    private PluginManager pluginManager;
 
     /**
      * @parameter expression="${localRepository}"
@@ -161,6 +172,8 @@
 
     private List localesList = new ArrayList();
 
+    private PlexusContainer container;
+
     public void execute()
         throws MojoExecutionException
     {
@@ -174,7 +187,7 @@
             {
                 URL templateDirectoryUrl = new URL( templateDirectory );
 
-                URL[] urls = { templateDirectoryUrl };
+                URL[] urls = {templateDirectoryUrl};
 
                 URLClassLoader urlClassloader = new URLClassLoader( urls );
 
@@ -186,9 +199,11 @@
             }
         }
 
+        Map reports = getReports();
+
         try
         {
-            categorizeReports();
+            categorizeReports( reports );
 
             if ( locales == null )
             {
@@ -232,7 +247,7 @@
                         String outputFileName = report.getOutputName() + ".html";
 
                         SiteRendererSink sink = siteRenderer.createSink( new File( siteDirectory ), outputFileName,
-                                                                         getSiteDescriptor( locale ) );
+                                                                         getSiteDescriptor( reports, locale ) );
 
                         report.generate( sink, locale );
 
@@ -243,8 +258,8 @@
                             outputFile.getParentFile().mkdirs();
                         }
 
-                        siteRenderer
-                            .generateDocument( new FileWriter( outputFile ), template, attributes, sink, locale );
+                        siteRenderer.generateDocument( new FileWriter( outputFile ), template, attributes, sink,
+                                                       locale );
                     }
                 }
 
@@ -253,7 +268,7 @@
                 {
                     try
                     {
-                        generateProjectInfoPage( getSiteDescriptor( locale ), locale );
+                        generateProjectInfoPage( getSiteDescriptor( reports, locale ), locale );
                     }
                     catch ( Exception e )
                     {
@@ -265,19 +280,20 @@
                 {
                     try
                     {
-                        generateProjectReportsPage( getSiteDescriptor( locale ), locale );
+                        generateProjectReportsPage( getSiteDescriptor( reports, locale ), locale );
                     }
                     catch ( Exception e )
                     {
-                        throw new MojoExecutionException( "An error is occurred in project reports page generation.", e );
+                        throw new MojoExecutionException( "An error is occurred in project reports page generation.",
+                                                          e );
                     }
                 }
 
                 // Generate static site
-                siteRenderer.render( new File( siteDirectory ), localeOutputDirectory, getSiteDescriptor( locale ),
-                                     template, attributes );
+                siteRenderer.render( new File( siteDirectory ), localeOutputDirectory,
+                                     getSiteDescriptor( reports, locale ), template, attributes );
                 siteRenderer.render( new File( generatedSiteDirectory ), localeOutputDirectory,
-                                     getSiteDescriptor( locale ), template, attributes );
+                                     getSiteDescriptor( reports, locale ), template, attributes );
 
                 File cssDirectory = new File( siteDirectory, "css" );
                 File imagesDirectory = new File( siteDirectory, "images" );
@@ -315,7 +331,7 @@
         }
     }
 
-    private void categorizeReports()
+    private void categorizeReports( Map reports )
         throws MojoExecutionException
     {
         for ( Iterator i = reports.values().iterator(); i.hasNext(); )
@@ -331,29 +347,30 @@
             }
             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." );
             }
         }
     }
 
     private String getReportsMenu( Locale locale )
-        throws MojoExecutionException
     {
         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" );
@@ -361,14 +378,14 @@
 
         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" );
@@ -379,7 +396,10 @@
         return buffer.toString();
     }
 
-    private InputStream getSiteDescriptor( Locale locale )
+    /**
+     * @todo should only be needed once
+     */
+    private InputStream getSiteDescriptor( Map reports, Locale locale )
         throws MojoExecutionException
     {
         File siteDescriptor = new File( siteDirectory, "site.xml" );
@@ -439,10 +459,9 @@
     {
         String outputFileName = "project-info.html";
 
-        SiteRendererSink sink = siteRenderer.createSink( new File( siteDirectory ), outputFileName,
-                                                         getSiteDescriptor( locale ) );
+        SiteRendererSink sink = siteRenderer.createSink( new File( siteDirectory ), outputFileName, siteDescriptor );
 
-        String title = i18n.getString( "site-plugin", locale, "report.information.title");
+        String title = i18n.getString( "site-plugin", locale, "report.information.title" );
 
         sink.head();
         sink.title();
@@ -457,27 +476,27 @@
         sink.sectionTitle1_();
 
         sink.paragraph();
-        sink.text( i18n.getString( "site-plugin", locale, "report.information.description1") + " " );
+        sink.text( i18n.getString( "site-plugin", locale, "report.information.description1" ) + " " );
         sink.link( "http://maven.apache.org" );
         sink.text( "Maven" );
         sink.link_();
-        sink.text( " " + i18n.getString( "site-plugin", locale, "report.information.description2") );
+        sink.text( " " + i18n.getString( "site-plugin", locale, "report.information.description2" ) );
         sink.paragraph_();
 
         sink.section2();
 
         sink.sectionTitle2();
-        sink.text( i18n.getString( "site-plugin", locale, "report.information.sectionTitle") );
+        sink.text( i18n.getString( "site-plugin", locale, "report.information.sectionTitle" ) );
         sink.sectionTitle2_();
 
         sink.table();
 
         sink.tableRow();
         sink.tableHeaderCell();
-        sink.text( i18n.getString( "site-plugin", locale, "report.information.column.document") );
+        sink.text( i18n.getString( "site-plugin", locale, "report.information.column.document" ) );
         sink.tableHeaderCell_();
         sink.tableHeaderCell();
-        sink.text( i18n.getString( "site-plugin", locale, "report.information.column.description") );
+        sink.text( i18n.getString( "site-plugin", locale, "report.information.column.description" ) );
         sink.tableHeaderCell_();
         sink.tableRow_();
 
@@ -518,10 +537,9 @@
     {
         String outputFileName = "maven-reports.html";
 
-        SiteRendererSink sink = siteRenderer.createSink( new File( siteDirectory ), outputFileName,
-                                                         getSiteDescriptor( locale ) );
+        SiteRendererSink sink = siteRenderer.createSink( new File( siteDirectory ), outputFileName, siteDescriptor );
 
-        String title = i18n.getString( "site-plugin", locale, "report.project.title");
+        String title = i18n.getString( "site-plugin", locale, "report.project.title" );
 
         sink.head();
         sink.title();
@@ -536,27 +554,27 @@
         sink.sectionTitle1_();
 
         sink.paragraph();
-        sink.text( i18n.getString( "site-plugin", locale, "report.project.description1") + " " );
+        sink.text( i18n.getString( "site-plugin", locale, "report.project.description1" ) + " " );
         sink.link( "http://maven.apache.org" );
         sink.text( "Maven" );
         sink.link_();
-        sink.text( ". " + i18n.getString( "site-plugin", locale, "report.project.description2") );
+        sink.text( ". " + i18n.getString( "site-plugin", locale, "report.project.description2" ) );
         sink.paragraph_();
 
         sink.section2();
 
         sink.sectionTitle2();
-        sink.text( i18n.getString( "site-plugin", locale, "report.project.sectionTitle") );
+        sink.text( i18n.getString( "site-plugin", locale, "report.project.sectionTitle" ) );
         sink.sectionTitle2_();
 
         sink.table();
 
         sink.tableRow();
         sink.tableHeaderCell();
-        sink.text( i18n.getString( "site-plugin", locale, "report.project.column.document") );
+        sink.text( i18n.getString( "site-plugin", locale, "report.project.column.document" ) );
         sink.tableHeaderCell_();
         sink.tableHeaderCell();
-        sink.text( i18n.getString( "site-plugin", locale, "report.project.column.description") );
+        sink.text( i18n.getString( "site-plugin", locale, "report.project.column.description" ) );
         sink.tableHeaderCell_();
         sink.tableRow_();
 
@@ -605,8 +623,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 );
@@ -640,7 +658,7 @@
         {
             DirectoryScanner scanner = new DirectoryScanner();
 
-            String[] includedResources = { "**/**" };
+            String[] includedResources = {"**/**"};
 
             scanner.setIncludes( includedResources );
 
@@ -657,9 +675,9 @@
                 String name = (String) j.next();
 
                 File sourceFile = new File( source, name );
-    
+
                 File destinationFile = new File( destination, name );
-    
+
                 FileUtils.copyFile( sourceFile, destinationFile );
             }
         }
@@ -683,5 +701,53 @@
                 return new File( outputDirectory, locale.getLanguage() );
             }
         }
+    }
+
+    private Map getReports()
+        throws MojoExecutionException
+    {
+        // TODO: not the best solution. Perhaps a mojo tag that causes the plugin manager to populate project reports instead?
+
+        List reportPlugins = project.getReportPlugins();
+        if ( reportPlugins != null )
+        {
+            for ( Iterator it = reportPlugins.iterator(); it.hasNext(); )
+            {
+                org.apache.maven.model.Plugin plugin = (org.apache.maven.model.Plugin) it.next();
+                try
+                {
+                    pluginManager.verifyPlugin( plugin.getGroupId(), plugin.getArtifactId(), plugin.getVersion(),
+                                                project, localRepository );
+                }
+                catch ( ArtifactResolutionException e )
+                {
+                    throw new MojoExecutionException( "Cannot find report plugin", e );
+                }
+                catch ( PluginManagerException e )
+                {
+                    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
+        {
+            return container.lookupMap( MavenReport.ROLE );
+        }
+        catch ( ComponentLookupException e )
+        {
+            throw new MojoExecutionException( "Unable to find reports", e );
+        }
+    }
+
+    public void contextualize( Context context )
+        throws ContextException
+    {
+        container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
     }
 }



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