Author: vmassol
Date: Wed Mar 29 08:55:43 2006
New Revision: 389831

URL: http://svn.apache.org/viewcvs?rev=389831&view=rev
Log:
MCLOVER-18: clover:clover bombs on source-less projects

Applied patch submitted by Marcel May and modified it.


Modified:
    
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverReportMojo.java

Modified: 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverReportMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverReportMojo.java?rev=389831&r1=389830&r2=389831&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverReportMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverReportMojo.java
 Wed Mar 29 08:55:43 2006
@@ -127,25 +127,32 @@
      */
     public void executeReport( Locale locale ) throws MavenReportException
     {
-        // Only generate module reports for non root projects
-        if ( !getProject().isExecutionRoot() )
+        // Note: It seems we need to check whether or not we should generate a 
report here again because even though
+        // the canGenerateReport() method is called automatically when the 
"mvn site" phase is called, it's not called
+        // when the "mvn clover:clover" goal is called! Probably someone 
Maven2 should improve, see
+        // http://jira.codehaus.org/browse/MNG-2188
+        if ( canGenerateReport() )
         {
-            AbstractCloverMojo.waitForFlush( this.waitForFlush, 
this.flushInterval );
-            createCloverHtmlReport();
-        }
+            // Only generate module level report for Java projects
+            if ( isJavaProject(this.project) )
+            {
+                AbstractCloverMojo.waitForFlush( this.waitForFlush, 
this.flushInterval );
+                createCloverHtmlReport();
+            }
 
-        // If we're in the top level module, then create an extra report by 
aggregating the generated clover
-        // databases.
-        if ( this.aggregate && getProject().isExecutionRoot() )
-        {
-            // Ensure the merged database output directory exists
-            new File( this.cloverMergeDatabase ).getParentFile().mkdirs();
+            // If we're in the top level module and there are children 
modules, then create an extra report by
+            // aggregating the generated clover databases.
+            if ( this.aggregate && ( this.reactorProjects.size() > 1 ) )
+            {
+                // Ensure the merged database output directory exists
+                new File( this.cloverMergeDatabase ).getParentFile().mkdirs();
 
-            // Merge the databases
-            mergeCloverDatabases();
+                // Merge the databases
+                mergeCloverDatabases();
 
-            // Generate the merged report
-            createMasterCloverHtmlReport();
+                // Generate the merged report
+                createMasterCloverHtmlReport();
+            }
         }
     }
 
@@ -172,7 +179,7 @@
             }
             else
             {
-                getLog().warn("Skipping [" + cloverDb.getPath() + "] as it 
doesn't exist.");
+                getLog().debug("Skipping [" + cloverDb.getPath() + "] as it 
doesn't exist.");
             }
         }
 
@@ -303,31 +310,24 @@
     }
 
     /**
-     * Only execute reports for Java projects.
+     * Generate reports for Java projects and for projects which have a Clover 
database available.
      *
-     * @return true if the current project is Java project and false otherwise
+     * @return true if a project should be generated using the algorithm 
defined above
      * @see org.apache.maven.reporting.AbstractMavenReport#canGenerateReport()
      */
     public boolean canGenerateReport()
     {
         boolean canGenerate = false;
 
-        if ( this.aggregate && getProject().isExecutionRoot() )
+        // Check if we have at least one project which is a java project
+        for ( Iterator projects = this.reactorProjects.iterator(); 
projects.hasNext(); )
         {
-            // Check if we have at least one project which is a java project
-            for ( Iterator projects = this.reactorProjects.iterator(); 
projects.hasNext(); )
+            MavenProject project = (MavenProject) projects.next();
+            if ( isJavaProject(project) && 
!getChildrenCloverDatabases().isEmpty() )
             {
-                MavenProject project = (MavenProject) projects.next();
-                if ( isJavaProject(project) )
-                {
-                    canGenerate = true;
-                    break;
-                }
+                canGenerate = true;
+                break;
             }
-        }
-        else if ( isJavaProject(getProject()) )
-        {
-            canGenerate = true;
         }
 
         return canGenerate;


Reply via email to