You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2005/12/30 03:11:42 UTC
svn commit: r359970 -
/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteMojo.java
Author: brett
Date: Thu Dec 29 18:11:36 2005
New Revision: 359970
URL: http://svn.apache.org/viewcvs?rev=359970&view=rev
Log:
add modules without the reactor
Modified:
maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteMojo.java
Modified: maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteMojo.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteMojo.java?rev=359970&r1=359969&r2=359970&view=diff
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteMojo.java (original)
+++ maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteMojo.java Thu Dec 29 18:11:36 2005
@@ -33,6 +33,8 @@
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.model.Model;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;
@@ -46,6 +48,7 @@
import java.io.File;
import java.io.FileOutputStream;
+import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -491,18 +494,72 @@
props.put( "reports", "" );
}
- // we require child modules and reactors to process module menu
+ populateModules( props, locale );
- if ( reactorProjects.size() > 1 && project.getModules().size() > 0 )
+ return getDecorationModel( project, locale, props );
+ }
+
+ private void populateModules( Map props, Locale locale )
+ throws MojoExecutionException
+ {
+ // we require child modules and reactors to process module menu
+ if ( project.getModules().size() > 0 )
{
- props.put( "modules", getModulesMenu( locale ) );
+ List projects = this.reactorProjects;
+ String menuItems;
+ if ( projects.size() == 1 )
+ {
+ // Not running reactor - search for the projects manually
+ List models = new ArrayList( project.getModules().size() );
+ for ( Iterator i = project.getModules().iterator(); i.hasNext(); )
+ {
+ String module = (String) i.next();
+ Model model;
+ File f = new File( project.getBasedir(), module + "/pom.xml" );
+ if ( f.exists() )
+ {
+ MavenXpp3Reader reader = new MavenXpp3Reader();
+ FileReader fileReader = null;
+ try
+ {
+ fileReader = new FileReader( f );
+ model = reader.read( fileReader );
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( "Unable to read POM", e );
+ }
+ catch ( XmlPullParserException e )
+ {
+ throw new MojoExecutionException( "Unable to read POM", e );
+ }
+ finally
+ {
+ IOUtil.close( fileReader );
+ }
+ }
+ else
+ {
+ model = new Model();
+ model.setName( module );
+ model.setUrl( module );
+ }
+ models.add( model );
+ }
+ menuItems = getModulesMenuItemsFromModels( models );
+ }
+ else
+ {
+ menuItems = getModulesMenuItemsFromReactorProjects();
+ }
+ props.put( "modulesItems", menuItems );
+ props.put( "modules", getModulesMenu( locale, menuItems ) );
}
else
{
+ props.put( "modulesItems", "" );
props.put( "modules", "" );
}
-
- return getDecorationModel( project, locale, props );
}
private DecorationModel getDecorationModel( MavenProject project, Locale locale, Map origProps )
@@ -768,18 +825,28 @@
/**
* Generate a menu for modules
*
- * @param locale the locale wanted
+ * @param locale the locale wanted
+ * @param menuItems
* @return a XML menu for modules
*/
- private String getModulesMenu( Locale locale )
+ private String getModulesMenu( Locale locale, String menuItems )
{
-
StringBuffer buffer = new StringBuffer();
buffer.append( "<menu name=\"" );
buffer.append( i18n.getString( "site-plugin", locale, "report.menu.projectmodules" ) );
buffer.append( "\">\n" );
+ buffer.append( menuItems );
+
+ buffer.append( "</menu>\n" );
+
+ return buffer.toString();
+ }
+
+ private String getModulesMenuItemsFromReactorProjects()
+ {
+ StringBuffer buffer = new StringBuffer();
if ( reactorProjects != null && reactorProjects.size() > 1 )
{
Iterator reactorItr = reactorProjects.iterator();
@@ -788,40 +855,56 @@
{
MavenProject reactorProject = (MavenProject) reactorItr.next();
- // dont't use modules as they address file system locations and we need projects
- //
- // Note, we could try and parse the module's pom based upon its directory location
- // which would remove our reliance on reactorProjects but its more complicated.
- // The side effect of using reactorProjects is that to generate module links
- // you must do a recursive build (no mvn -N)
-
if ( reactorProject != null && reactorProject.getParent() != null &&
project.getArtifactId().equals( reactorProject.getParent().getArtifactId() ) )
{
String reactorUrl = reactorProject.getUrl();
+ String name = reactorProject.getName();
- if ( reactorUrl != null )
- {
- buffer.append( " <item name=\"" );
- buffer.append( reactorProject.getName() );
- buffer.append( "\" href=\"" );
- buffer.append( reactorUrl );
- if ( reactorUrl.endsWith( "/" ) )
- {
- buffer.append( "index.html\"/>\n" );
- }
- else
- {
- buffer.append( "/index.html\"/>\n" );
- }
- }
+ appendMenuItem( buffer, name, reactorUrl );
}
}
}
+ return buffer.toString();
+ }
- buffer.append( "</menu>\n" );
+ private String getModulesMenuItemsFromModels( List models )
+ {
+ StringBuffer buffer = new StringBuffer();
+ if ( models != null && models.size() > 1 )
+ {
+ Iterator reactorItr = models.iterator();
+ while ( reactorItr.hasNext() )
+ {
+ Model model = (Model) reactorItr.next();
+
+ String reactorUrl = model.getUrl();
+ String name = model.getName();
+
+ appendMenuItem( buffer, name, reactorUrl );
+ }
+ }
return buffer.toString();
+ }
+
+ private static void appendMenuItem( StringBuffer buffer, String name, String href )
+ {
+ if ( href != null )
+ {
+ buffer.append( " <item name=\"" );
+ buffer.append( name );
+ buffer.append( "\" href=\"" );
+ buffer.append( href );
+ if ( href.endsWith( "/" ) )
+ {
+ buffer.append( "index.html\"/>\n" );
+ }
+ else
+ {
+ buffer.append( "/index.html\"/>\n" );
+ }
+ }
}
/**