Author: evenisse
Date: Thu May 19 09:53:27 2005
New Revision: 170966

URL: http://svn.apache.org/viewcvs?rev=170966&view=rev
Log:
Add a little javadoc report

Added:
    maven/components/trunk/maven-reports/maven-javadoc-plugin/
    maven/components/trunk/maven-reports/maven-javadoc-plugin/pom.xml
    maven/components/trunk/maven-reports/maven-javadoc-plugin/src/
    maven/components/trunk/maven-reports/maven-javadoc-plugin/src/main/
    maven/components/trunk/maven-reports/maven-javadoc-plugin/src/main/java/
    maven/components/trunk/maven-reports/maven-javadoc-plugin/src/main/java/org/
    
maven/components/trunk/maven-reports/maven-javadoc-plugin/src/main/java/org/apache/
    
maven/components/trunk/maven-reports/maven-javadoc-plugin/src/main/java/org/apache/maven/
    
maven/components/trunk/maven-reports/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/
    
maven/components/trunk/maven-reports/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/
    
maven/components/trunk/maven-reports/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/JavadocReport.java
    
maven/components/trunk/maven-reports/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/JavadocReportMojo.java

Added: maven/components/trunk/maven-reports/maven-javadoc-plugin/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-reports/maven-javadoc-plugin/pom.xml?rev=170966&view=auto
==============================================================================
--- maven/components/trunk/maven-reports/maven-javadoc-plugin/pom.xml (added)
+++ maven/components/trunk/maven-reports/maven-javadoc-plugin/pom.xml Thu May 
19 09:53:27 2005
@@ -0,0 +1,23 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.plugins</groupId>
+    <artifactId>maven-report-parent</artifactId>
+    <version>2.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>maven-javadoc-plugin</artifactId>
+  <version>2.0-SNAPSHOT</version>
+  <packaging>maven-plugin</packaging>
+  <name>Maven Javadoc Plugin</name>
+  <developers>
+    <developer>
+      <id>evenisse</id>
+      <name>Emmanuel Venisse</name>
+      <email>[EMAIL PROTECTED]</email>
+      <organization>Apache Software Foundation</organization>
+      <roles>
+        <role>Creator</role>
+      </roles>
+    </developer>
+  </developers>
+</project>

Added: 
maven/components/trunk/maven-reports/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/JavadocReport.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-reports/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/JavadocReport.java?rev=170966&view=auto
==============================================================================
--- 
maven/components/trunk/maven-reports/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/JavadocReport.java
 (added)
+++ 
maven/components/trunk/maven-reports/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/JavadocReport.java
 Thu May 19 09:53:27 2005
@@ -0,0 +1,188 @@
+package org.apache.maven.plugin.javadoc;
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation.
+ *
+ * Licensed 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 java.io.File;
+import java.util.Calendar;
+import java.util.Iterator;
+
+import org.apache.maven.reporting.AbstractMavenReport;
+import org.apache.maven.reporting.MavenReportException;
+import org.codehaus.doxia.sink.Sink;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
+import org.codehaus.plexus.util.cli.Commandline;
+import org.codehaus.plexus.util.cli.DefaultConsumer;
+
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Emmanuel Venisse</a>
+ * @version $Id: DependenciesReport.java,v 1.2 2005/02/23 00:08:02 brett Exp $
+ */
+public class JavadocReport
+    extends AbstractMavenReport
+{
+
+    /**
+     * @see 
org.apache.maven.reporting.AbstractMavenReport#generate(org.codehaus.doxia.sink.Sink)
+     */
+    public void generate( Sink sink )
+        throws MavenReportException
+    {
+        if ( getConfiguration() == null )
+        {
+            throw new MavenReportException( "You must specify a report 
configuration." );
+        }
+
+        execute();
+    }
+
+    /**
+     * @see org.apache.maven.reporting.AbstractMavenReport#execute()
+     */
+    protected void execute()
+        throws MavenReportException
+    {
+        try
+        {
+            File outputDir = new File( 
getConfiguration().getReportOutputDirectory().getAbsolutePath() + "/apidocs" );
+            outputDir.mkdirs();
+
+            int actualYear = Calendar.getInstance().get( Calendar.YEAR );
+            String year;
+            if ( getConfiguration().getModel().getInceptionYear() != null
+                 && Integer.valueOf( 
getConfiguration().getModel().getInceptionYear() ).intValue() == actualYear )
+            {
+                year = getConfiguration().getModel().getInceptionYear();
+            }
+            else
+            {
+                year = getConfiguration().getModel().getInceptionYear() + "-" 
+ String.valueOf( actualYear );
+            }
+
+            StringBuffer classpath = new StringBuffer();
+            for ( Iterator i = 
getConfiguration().getProject().getCompileClasspathElements().iterator(); 
i.hasNext(); )
+            {
+                classpath.append( (String) i.next() );
+                if ( i.hasNext() )
+                {
+                    classpath.append( ";" );
+                }
+            }
+
+            StringBuffer sourcePath = new StringBuffer();
+            String[] fileList = new String[1];
+            for ( Iterator i = 
getConfiguration().getCompileSourceRoots().iterator(); i.hasNext(); )
+            {
+                String sourceDirectory = (String) i.next();
+                fileList = FileUtils.getFilesFromExtension( sourceDirectory, 
new String[] { "java" } );
+                sourcePath.append( sourceDirectory );
+            }
+
+            File javadocDirectory = new File( 
getConfiguration().getProject().getBuild().getDirectory() + "/javadoc" );
+            if ( fileList != null && fileList.length != 0 )
+            {
+                StringBuffer files = new StringBuffer();
+                for ( int i = 0; i < fileList.length; i++ )
+                {
+                    files.append( fileList[i] );
+                    files.append( "\n" );
+                }
+                javadocDirectory.mkdirs();
+                FileUtils.fileWrite( new File( javadocDirectory, "files" 
).getAbsolutePath(), files.toString() );
+            }
+            else
+            {
+                return;
+            }
+
+            Commandline cl = new Commandline();
+            cl.setWorkingDirectory( javadocDirectory.getAbsolutePath() );
+            cl.setExecutable( getJavadocPath() );
+            cl.createArgument().setValue( "-use" );
+            cl.createArgument().setValue( "-version" );
+            cl.createArgument().setValue( "-author" );
+            cl.createArgument().setValue( "-windowtitle" );
+            cl.createArgument().setValue(
+                                          
getConfiguration().getModel().getName() + " "
+                                              + 
getConfiguration().getModel().getVersion() );
+            cl.createArgument().setValue( "-bottom" );
+            cl.createArgument().setValue( "Copyright &copy; " + year + " "
+                                          + 
getConfiguration().getModel().getOrganization().getName()
+                                          + ". All Rights Reserved." );
+            cl.createArgument().setValue( "-sourcePath" );
+            cl.createArgument().setValue( sourcePath.toString() );
+            cl.createArgument().setValue( "-d" );
+            cl.createArgument().setValue( outputDir.getAbsolutePath() );
+            cl.createArgument().setValue( "-classpath" );
+            cl.createArgument().setValue( classpath.toString() );
+            cl.createArgument().setValue( "@files" );
+            System.out.println( Commandline.toString( cl.getCommandline() ) );
+            System.out.println( cl.getWorkingDirectory() );
+            CommandLineUtils.executeCommandLine( cl, new DefaultConsumer(), 
new DefaultConsumer() );
+        }
+        catch ( Exception e )
+        {
+            throw new MavenReportException( "An error is occurred in javadoc 
report generation.", e );
+        }
+    }
+
+    /**
+     * @see org.apache.maven.reporting.MavenReport#getDescription()
+     */
+    public String getDescription()
+    {
+        return "JavaDoc API documentation.";
+    }
+
+    /**
+     * @see org.apache.maven.reporting.MavenReport#getName()
+     */
+    public String getName()
+    {
+        return "JavaDocs";
+    }
+
+    /**
+     * @see org.apache.maven.reporting.MavenReport#getOutputName()
+     */
+    public String getOutputName()
+    {
+        return "apidocs/index";
+    }
+
+    /**
+     * Return path of javadoc tool.
+     * 
+     * @return path of javadoc tool
+     */
+    private String getJavadocPath()
+    {
+        String osName = System.getProperty( "os.name" );
+        String jdkPath;
+        if ( osName.startsWith( "Windows" ) )
+        {
+            jdkPath = "%JAVA_HOME%";
+        }
+        else
+        {
+            jdkPath = "$JAVA_HOME";
+        }
+
+        String fileSeparator = System.getProperty( "file.separator" );
+        return jdkPath + fileSeparator + "bin" + fileSeparator + "javadoc";
+    }
+}
\ No newline at end of file

Added: 
maven/components/trunk/maven-reports/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/JavadocReportMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-reports/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/JavadocReportMojo.java?rev=170966&view=auto
==============================================================================
--- 
maven/components/trunk/maven-reports/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/JavadocReportMojo.java
 (added)
+++ 
maven/components/trunk/maven-reports/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/JavadocReportMojo.java
 Thu May 19 09:53:27 2005
@@ -0,0 +1,138 @@
+package org.apache.maven.plugin.javadoc;
+
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.reporting.MavenReport;
+import org.apache.maven.reporting.MavenReportConfiguration;
+import org.codehaus.doxia.site.renderer.SiteRenderer;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.StringInputStream;
+import org.codehaus.plexus.util.StringUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @goal javadoc
+ * @description A Maven2 plugin which generates a Javadoc report
+ * @requiresDependencyResolution compile
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
+ * @version $Id: PmdReportMojo.java,v 1.4 2005/02/23 00:08:54 brett Exp $
+ */
+public class JavadocReportMojo
+    extends AbstractMojo
+{
+    /**
+     * @parameter expression="${basedir}/src/site"
+     * @required
+     */
+    private String siteDirectory;
+
+    /**
+     * @parameter expression="${project.build.directory}/site"
+     * @required
+     */
+    private String outputDirectory;
+
+    /**
+     * @parameter 
expression="${component.org.codehaus.doxia.site.renderer.SiteRenderer}"
+     * @required
+     * @readonly
+     */
+    private  SiteRenderer siteRenderer;
+
+    /**
+     * @parameter expression="${project}"
+     * @required
+     * @readonly
+     */
+    private MavenProject project;
+
+    public void execute()
+        throws MojoExecutionException
+    {
+        MavenReportConfiguration config = new MavenReportConfiguration();
+
+        config.setProject( project );
+
+        config.setReportOutputDirectory( new File( outputDirectory ) );
+
+        MavenReport report = new JavadocReport();
+
+        report.setConfiguration( config );
+
+        try
+        {
+            report.generate( null );
+        }
+        catch ( Exception e )
+        {
+            throw new MojoExecutionException( "An error is occurred in the PMD 
report generation.", e );
+        }
+    }
+
+    private String getReportsMenu()
+    {
+        StringBuffer buffer = new StringBuffer();
+        buffer.append( "<menu name=\"Project Documentation\">\n" );
+        buffer.append( "    <item name=\"About " + project.getName() + "\" 
href=\"/index.html\"/>\n");
+        buffer.append( "    <item name=\"Project reports\" 
href=\"/maven-reports.html\" collapse=\"true\">\n" );
+
+        buffer.append( "        <item name=\"PMD report\" 
href=\"/pmd.html\"/>\n" );
+
+        buffer.append( "    </item>\n" );
+        buffer.append( "</menu>\n" );
+        return buffer.toString();
+    }
+
+    private InputStream getSiteDescriptor()
+        throws MojoExecutionException
+    {
+        File siteDescriptor = new File( siteDirectory, "site.xml" );
+
+        if ( !siteDescriptor.exists() )
+        {
+            throw new MojoExecutionException( "The site descriptor is not 
present!" );
+        }
+
+        String siteDescriptorContent = "";
+
+        try
+        {
+            siteDescriptorContent = FileUtils.fileRead( siteDescriptor );
+        }
+        catch( IOException e )
+        {
+            throw new MojoExecutionException( "The site descriptor cannot be 
read!", e );
+        }
+
+        Map props = new HashMap();
+
+        props.put( "reports", getReportsMenu() );
+
+        siteDescriptorContent = StringUtils.interpolate( 
siteDescriptorContent, props );
+
+        return new StringInputStream( siteDescriptorContent );
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to