You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2007/08/31 03:35:16 UTC

svn commit: r571352 - in /maven/plugins/trunk/maven-assembly-plugin: ./ src/main/aspect/ src/main/aspect/org/ src/main/aspect/org/apache/ src/main/aspect/org/apache/maven/ src/main/aspect/org/apache/maven/plugin/ src/main/aspect/org/apache/maven/plugin...

Author: jdcasey
Date: Thu Aug 30 18:35:14 2007
New Revision: 571352

URL: http://svn.apache.org/viewvc?rev=571352&view=rev
Log:
Removing some sysout statements from the main codebase, and adding some debugging aspects for performance, stats, and tracing info, which can be enabled by building with -Paspects (the aspects profile enabled). You'll also have to use various system properties (currently the fastest solution I could find) to trigger the various types of output.

Added:
    maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/
    maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/
    maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/
    maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/
    maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/
    maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/
    maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/
    maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/log/
    maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/log/PhaseTracingAspect.aj
    maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/perf/
    maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/perf/TimingAspect.aj
    maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/stats/
    maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/stats/ArchiverStatsAspect.aj
Modified:
    maven/plugins/trunk/maven-assembly-plugin/pom.xml
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileSetFormatter.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java

Modified: maven/plugins/trunk/maven-assembly-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/pom.xml?rev=571352&r1=571351&r2=571352&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/pom.xml Thu Aug 30 18:35:14 2007
@@ -319,22 +319,22 @@
                 </goals>
                 <configuration>
                   <projectsDirectory>${project.build.testOutputDirectory}/projects</projectsDirectory>
+                  <!--
                   <debug>true</debug>
+                  -->
                   
                  <!-- Useful config for debugging one IT -->
-                  <!-- 
                   <pomIncludes>
-                    <pomInclude>dependency-sets/including-pom-dependency/pom.xml</pomInclude>
-                    <pomInclude>dependency-sets/including-sar-dependency/pom.xml</pomInclude>
-                    <pomInclude>dependency-sets/massembly-235/pom.xml</pomInclude>
+                    <pomInclude>dependency-sets/dependencySet-unpacked/pom.xml</pomInclude>
                   </pomIncludes>
                   <streamLogs>true</streamLogs>
-                   -->
                   <!-- END single-IT debugging block. -->
                   
+                  <!-- 
                   <pomIncludes>
                     <pomInclude>**/pom.xml</pomInclude>
                   </pomIncludes>
+                   -->
                   <pomExcludes>
                     <pomExclude>repositories/repo-with-snapshot-parents/pom.xml</pomExclude>
                     
@@ -357,8 +357,37 @@
         </plugins>
       </build>
     </profile>
+    
+    <profile>
+      <id>aspects</id>
+      
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>aspectj-maven-plugin</artifactId>
+            <version>1.0-beta-2</version>
+            
+            <executions>
+              <execution>
+                <id>weave</id>
+                <goals>
+                  <goal>compile</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
   </profiles>
+  
   <dependencies>
+    <dependency>
+      <groupId>aspectj</groupId>
+      <artifactId>aspectjrt</artifactId>
+      <version>1.5.3</version>
+    </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-archiver</artifactId>

Added: maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/log/PhaseTracingAspect.aj
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/log/PhaseTracingAspect.aj?rev=571352&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/log/PhaseTracingAspect.aj (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/log/PhaseTracingAspect.aj Thu Aug 30 18:35:14 2007
@@ -0,0 +1,36 @@
+package org.apache.maven.plugin.assembly.aspect.log;
+
+import org.apache.maven.plugin.assembly.archive.phase.AssemblyArchiverPhase;
+
+public aspect PhaseTracingAspect
+{
+
+    private boolean timingsEnabled()
+    {
+        return "true".equals( System.getProperty( "assembly.tracePhases", "false" ) ) ||
+                "true".equals( System.getProperty( "assembly.traceAll", "false" ) );
+    }
+
+    private pointcut phaseExecution(): execution( * AssemblyArchiverPhase+.execute( .. ) );
+
+    void around(): phaseExecution()
+    {
+        if ( timingsEnabled() )
+        {
+            Class phaseClass = thisJoinPointStaticPart.getSignature().getDeclaringType();
+            String phaseName = phaseClass.getName().substring( phaseClass.getPackage().getName().length() + 1 );
+
+
+            System.out.println( "Entering assembly phase: " + phaseName );
+
+            proceed();
+
+            System.out.println( "Exiting phase: " + phaseName );
+        }
+        else
+        {
+            proceed();
+        }
+    }
+
+}

Added: maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/perf/TimingAspect.aj
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/perf/TimingAspect.aj?rev=571352&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/perf/TimingAspect.aj (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/perf/TimingAspect.aj Thu Aug 30 18:35:14 2007
@@ -0,0 +1,170 @@
+package org.apache.maven.plugin.assembly.aspect.perf;
+
+import org.apache.maven.plugin.assembly.archive.phase.AssemblyArchiverPhase;
+import org.apache.maven.plugin.assembly.artifact.DependencyResolver;
+import org.apache.maven.plugin.assembly.archive.archiver.AssemblyProxyArchiver;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.archiver.ArchivedFileSet;
+import org.codehaus.plexus.archiver.FileSet;
+
+import java.io.File;
+import java.util.Set;
+
+public aspect TimingAspect
+{
+
+    private pointcut resolveDependencies( MavenProject project, String scope, boolean transitive ): execution( Set DependencyResolver+.resolveDependencies( MavenProject, String, .., boolean ) ) && args( project, scope, .., transitive );
+
+    private boolean timingsEnabled()
+    {
+        return "true".equals( System.getProperty( "assembly.showTimings", "false" ) );
+    }
+
+    Set around( MavenProject project, String scope, boolean transitive ): resolveDependencies( project, scope, transitive )
+    {
+        if ( timingsEnabled() )
+        {
+            long start = System.currentTimeMillis();
+
+            Set result = proceed( project, scope, transitive );
+
+            System.out.println( "\n\n" + thisJoinPointStaticPart.getSignature().getName() + "\nfor project: " + project.getId() + "\nwith scope: " + scope + "\ntransitively? " + transitive + "\ntook " + ( System.currentTimeMillis() - start ) + " ms.\n" );
+
+            return result;
+        }
+        else
+        {
+            return proceed( project, scope, transitive );
+        }
+    }
+
+    private pointcut phaseExecution(): execution( * AssemblyArchiverPhase+.execute( .. ) );
+
+    void around(): phaseExecution()
+    {
+        if ( timingsEnabled() )
+        {
+            long start = System.currentTimeMillis();
+
+            proceed();
+
+            Class phaseClass = thisJoinPointStaticPart.getSignature().getDeclaringType();
+            String phaseName = phaseClass.getName().substring( phaseClass.getPackage().getName().length() + 1 );
+
+            System.out.println( "Execution of phase: " + phaseName + " took " + ( System.currentTimeMillis() - start ) + " ms." );
+        }
+        else
+        {
+            proceed();
+        }
+    }
+
+    private pointcut addArchivedFileSet_FileSet( ArchivedFileSet fs ): execution( * AssemblyProxyArchiver.addArchivedFileSet( ArchivedFileSet ) ) && args( fs );
+
+    private pointcut addArchivedFileSet_File( File file ): execution( * AssemblyProxyArchiver.addArchivedFileSet( File, .. ) ) && args( file, .. );
+
+    private pointcut addFileSet( FileSet fs ): execution( * AssemblyProxyArchiver.addFileSet( FileSet ) ) && args( fs );
+
+    private pointcut addFile( File file ): execution( * AssemblyProxyArchiver.addDirectory( File, .. ) ) && args( file, .. );
+
+    private pointcut addDirectory( File file ): execution( * AssemblyProxyArchiver.addFile( File, .. ) ) && args( file, .. );
+
+    private pointcut createArchive(): execution( * AssemblyProxyArchiver.createArchive(..) );
+
+    void around( ArchivedFileSet fs ): addArchivedFileSet_FileSet( fs )
+    {
+        if ( timingsEnabled() )
+        {
+            long start = System.currentTimeMillis();
+
+            proceed( fs );
+
+            System.out.println( thisJoinPointStaticPart.getSignature().getName() + " for artifact: " + fs.getArchive() + " took " + ( System.currentTimeMillis() - start ) + " ms." );
+        }
+        else
+        {
+            proceed( fs );
+        }
+    }
+
+    void around( File file ): addArchivedFileSet_File( file )
+    {
+        if ( timingsEnabled() )
+        {
+            long start = System.currentTimeMillis();
+
+            proceed( file );
+
+            System.out.println( thisJoinPointStaticPart.getSignature().getName() + " for artifact: " + file + " took " + ( System.currentTimeMillis() - start ) + " ms." );
+        }
+        else
+        {
+            proceed( file );
+        }
+    }
+
+    void around( FileSet fs ): addFileSet( fs )
+    {
+        if ( timingsEnabled() )
+        {
+            long start = System.currentTimeMillis();
+
+            proceed( fs );
+
+            System.out.println( thisJoinPointStaticPart.getSignature().getName() + " for file-set: " + fs.getDirectory() + " took " + ( System.currentTimeMillis() - start ) + " ms." );
+        }
+        else
+        {
+            proceed( fs );
+        }
+    }
+
+    void around( File file ): addFile( file )
+    {
+        if ( timingsEnabled() )
+        {
+            long start = System.currentTimeMillis();
+
+            proceed( file );
+
+            System.out.println( thisJoinPointStaticPart.getSignature().getName() + " for file: " + file + " took " + ( System.currentTimeMillis() - start ) + " ms." );
+        }
+        else
+        {
+            proceed( file );
+        }
+    }
+
+    void around( File file ): addDirectory( file )
+    {
+        if ( timingsEnabled() )
+        {
+            long start = System.currentTimeMillis();
+
+            proceed( file );
+
+            System.out.println( thisJoinPointStaticPart.getSignature().getName() + " for dir: " + file + " took " + ( System.currentTimeMillis() - start ) + " ms." );
+        }
+        else
+        {
+            proceed( file );
+        }
+    }
+
+    void around(): createArchive()
+    {
+        if ( timingsEnabled() )
+        {
+            long start = System.currentTimeMillis();
+
+            proceed();
+
+            System.out.println( thisJoinPointStaticPart.getSignature().getName() + " took " + ( System.currentTimeMillis() - start ) + " ms." );
+        }
+        else
+        {
+            proceed();
+        }
+    }
+
+}

Added: maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/stats/ArchiverStatsAspect.aj
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/stats/ArchiverStatsAspect.aj?rev=571352&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/stats/ArchiverStatsAspect.aj (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/aspect/org/apache/maven/plugin/assembly/aspect/stats/ArchiverStatsAspect.aj Thu Aug 30 18:35:14 2007
@@ -0,0 +1,81 @@
+package org.apache.maven.plugin.assembly.aspect.stats;
+
+import org.codehaus.plexus.util.StringUtils;
+
+import org.apache.maven.plugin.assembly.archive.AssemblyArchiver;
+import org.apache.maven.plugin.assembly.archive.archiver.AssemblyProxyArchiver;
+import org.apache.maven.plugin.assembly.model.Assembly;
+
+public aspect ArchiverStatsAspect
+{
+
+    private pointcut proxyArchiver_AddArchivedFileSet(): execution( * AssemblyProxyArchiver.addArchivedFileSet(..) );
+
+    private pointcut proxyArchiver_AddFileSet(): execution( * AssemblyProxyArchiver.addFileSet(..) );
+
+    private pointcut proxyArchiver_AddFile(): execution( * AssemblyProxyArchiver.addDirectory(..) );
+
+    private pointcut proxyArchiver_AddDirectory(): execution( * AssemblyProxyArchiver.addFile(..) );
+
+    private pointcut assemblyArchiver_createArchive( Assembly assembly ): execution( * AssemblyArchiver.createArchive(Assembly, ..) ) && args(assembly, ..);
+
+    private int archivedFSCount = 0;
+    private int fsCount = 0;
+    private int fileCount = 0;
+    private int dirCount = 0;
+
+    private long start;
+
+    after() returning: proxyArchiver_AddArchivedFileSet()
+    {
+        archivedFSCount++;
+    }
+
+    after() returning: proxyArchiver_AddFileSet()
+    {
+        fsCount++;
+    }
+
+    after() returning: proxyArchiver_AddFile()
+    {
+        fileCount++;
+    }
+
+    after() returning: proxyArchiver_AddDirectory()
+    {
+        dirCount++;
+    }
+
+    before( Assembly assembly ): assemblyArchiver_createArchive( assembly )
+    {
+        start = System.currentTimeMillis();
+    }
+
+    after( Assembly assembly ) returning: assemblyArchiver_createArchive( assembly )
+    {
+        if ( "true".equals( System.getProperty( "assembly.showTimings", "false" ) ) )
+        {
+            long stop = System.currentTimeMillis();
+
+            StringBuffer summary = new StringBuffer();
+
+            summary.append( "\n" );
+            summary.append( "\n*****************************************************" );
+            summary.append( "\nSummary for Assembly: " ).append( assembly.getId() );
+            summary.append( "\n*****************************************************" );
+            summary.append( "\n" );
+            summary.append( "\nArtifacts unpacked: " ).append( archivedFSCount );
+            summary.append( "\nFile-Sets added: " ).append( fsCount );
+            summary.append( "\nDirectories added: " ).append( dirCount );
+            summary.append( "\nIndividual files added: " ).append( fileCount );
+            summary.append( "\nOutput formats: " ).append( StringUtils.join( assembly.getFormats().iterator(), ", " ) );
+            summary.append( "\nTotal time elapsed: " ).append( stop - start ).append( " ms" );
+            summary.append( "\n" );
+            summary.append( "\n*****************************************************" );
+            summary.append( "\n" );
+
+            System.out.println( summary.toString() );
+        }
+    }
+
+}

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileSetFormatter.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileSetFormatter.java?rev=571352&r1=571351&r2=571352&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileSetFormatter.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/format/FileSetFormatter.java Thu Aug 30 18:35:14 2007
@@ -1,10 +1,7 @@
 package org.apache.maven.plugin.assembly.format;
 
-import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileReader;
 import java.io.IOException;
-import java.io.Reader;
 
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugin.assembly.utils.AssemblyFileUtils;
@@ -12,12 +9,10 @@
 import org.apache.maven.shared.model.fileset.util.FileSetManager;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.IOUtil;
-
 
 public class FileSetFormatter
 {
-    
+
     private final AssemblerConfigurationSource configSource;
 
     private final Logger logger;
@@ -32,45 +27,45 @@
         throws AssemblyFormattingException, IOException
     {
         File formattedDir = archiveBaseDir;
-        
+
         String lineEndingHint = set.getLineEnding();
-        
+
         String lineEnding = AssemblyFileUtils.getLineEndingCharacters( lineEndingHint );
 
-        if ( lineEnding != null || set.isFiltered() )
+        if ( ( lineEnding != null ) || set.isFiltered() )
         {
-            
+
             FileSet fileSet = new FileSet();
             fileSet.setLineEnding( lineEnding );
             fileSet.setDirectory( set.getDirectory() );
             fileSet.setIncludes( set.getIncludes() );
-            
+
             formattedDir = FileUtils.createTempFile( "fileSetFormatter.", ".tmp", configSource.getTemporaryRootDirectory() );
-            
+
             formattedDir.delete();
             formattedDir.mkdirs();
-            
+
             fileSet.setExcludes( set.getExcludes() );
             fileSet.setUseDefaultExcludes( true );
-            
+
             FileSetManager fsm = new FileSetManager( logger );
             String[] files = fsm.getIncludedFiles( fileSet );
-            
+
             // if we don't have anything to process, let's just skip all of this mess.
-            if ( files == null || files.length == 0 )
+            if ( ( files == null ) || ( files.length == 0 ) )
             {
                 logger.info( "No files selected for line-ending conversion. Skipping: " + fileSet.getDirectory() );
-                
+
                 formattedDir.delete();
-                
+
                 return archiveBaseDir;
             }
-            
+
             FileFormatter fileFormatter = new FileFormatter( configSource, logger );
             for ( int i = 0; i < files.length; i++ )
             {
                 String file = files[i];
-                
+
                 File targetFile = new File( formattedDir, file );
 
                 targetFile.getParentFile().mkdirs();

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java?rev=571352&r1=571351&r2=571352&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java Thu Aug 30 18:35:14 2007
@@ -184,12 +184,6 @@
     public static String evaluateFileNameMapping( String expression, Artifact artifact, MavenProject mainProject, MavenProject artifactProject, String artifactProjectRefName )
         throws AssemblyFormattingException
     {
-        System.out.println( "in evaluateFileNameMapping, using expression: " + expression + "\nartifact: "
-                            + artifact.getId() + "\nmainProject: "
-                            + ( mainProject != null ? mainProject.getId() : "null" ) + "\nartifactProject: "
-                            + ( artifactProject != null ? artifactProject.getId() : "null" )
-                            + "\nartifactProjectRefName: " + artifactProjectRefName );
-
         String value = expression;
 
         if ( artifactProjectRefName == null )
@@ -279,8 +273,6 @@
 
         // Now, run the interpolation using the rules stated above.
         value = interpolator.interpolate( value, "__artifact" );
-
-        System.out.println( "Result of outputFileNameMapping evaluation: \'" + value + "\'" );
 
         return value;
     }