Author: jmcconnell Date: Wed Jun 20 13:50:47 2007 New Revision: 549227 URL: http://svn.apache.org/viewvc?view=rev&rev=549227 Log: patch optimization on the directory mojo will now respond to new patches that appear in the patch directory and process accordingly
Modified: maven/sandbox/trunk/plugins/maven-patch-plugin/pom.xml maven/sandbox/trunk/plugins/maven-patch-plugin/src/main/java/org/apache/maven/plugin/patch/ApplyPatchDirectoryMojo.java Modified: maven/sandbox/trunk/plugins/maven-patch-plugin/pom.xml URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-patch-plugin/pom.xml?view=diff&rev=549227&r1=549226&r2=549227 ============================================================================== --- maven/sandbox/trunk/plugins/maven-patch-plugin/pom.xml (original) +++ maven/sandbox/trunk/plugins/maven-patch-plugin/pom.xml Wed Jun 20 13:50:47 2007 @@ -12,11 +12,16 @@ <version>1.0-SNAPSHOT</version> <name>maven-patch-plugin Maven Mojo</name> <url>http://maven.apache.org</url> - <dependencies> + <dependencies> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-utils</artifactId> <version>1.4.2</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-container-default</artifactId> + <version>1.0-alpha-20</version> </dependency> <dependency> <groupId>org.apache.maven</groupId> Modified: maven/sandbox/trunk/plugins/maven-patch-plugin/src/main/java/org/apache/maven/plugin/patch/ApplyPatchDirectoryMojo.java URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-patch-plugin/src/main/java/org/apache/maven/plugin/patch/ApplyPatchDirectoryMojo.java?view=diff&rev=549227&r1=549226&r2=549227 ============================================================================== --- maven/sandbox/trunk/plugins/maven-patch-plugin/src/main/java/org/apache/maven/plugin/patch/ApplyPatchDirectoryMojo.java (original) +++ maven/sandbox/trunk/plugins/maven-patch-plugin/src/main/java/org/apache/maven/plugin/patch/ApplyPatchDirectoryMojo.java Wed Jun 20 13:50:47 2007 @@ -191,18 +191,13 @@ return; } - patchTrackingFile.getParentFile().mkdirs(); - if ( optimizations && patchTrackingFile.exists() ) - { - getLog().info( "Skipping patchfile application (patches already applied in previous build)." ); - return; - } + patchTrackingFile.getParentFile().mkdirs(); try { List foundPatchFiles = FileUtils.getFileNames( patchDirectory, "*", null, false ); - Map patchesApplied = findPatchesToApply(foundPatchFiles, patchDirectory); + Map patchesApplied = findPatchesToApply(foundPatchFiles, patchDirectory ); checkStrictPatchCompliance(foundPatchFiles); @@ -231,37 +226,54 @@ Collections.sort( patches ); } + String alreadyAppliedPatches = ""; + + try + { + if ( optimizations && patchTrackingFile.exists() ) + { + alreadyAppliedPatches = FileUtils.fileRead( patchTrackingFile ); + } + } + catch (IOException ioe) + { + throw new MojoFailureException( "unable to read patch tracking file: " + ioe.getMessage() ); + } + for ( Iterator it = patches.iterator(); it.hasNext(); ) { String patch = (String) it.next(); + + if ( alreadyAppliedPatches.indexOf( patch ) == -1 ) + { + File patchFile = new File( patchSourceDir, patch ); - File patchFile = new File( patchSourceDir, patch ); - - getLog().debug( "Looking for patch: " + patch + " in: " + patchFile ); + getLog().debug( "Looking for patch: " + patch + " in: " + patchFile ); - if ( !patchFile.exists() ) - { - if ( strictPatching ) - { - throw new MojoFailureException( - this, - "Patch operation cannot proceed.", - "Cannot find specified patch: \'" - + patch - + "\' in patch-source directory: \'" - + patchSourceDir - + "\'.\n\nEither fix this error, or relax strictPatching." ); + if ( !patchFile.exists() ) + { + if ( strictPatching ) + { + throw new MojoFailureException( + this, + "Patch operation cannot proceed.", + "Cannot find specified patch: \'" + + patch + + "\' in patch-source directory: \'" + + patchSourceDir + + "\'.\n\nEither fix this error, or relax strictPatching." ); + } + else + { + getLog().info( "Skipping patch: " + patch + " listed in the patches parameter; it is missing." ); + } } else { - getLog().info( "Skipping patch: " + patch + " listed in the patches parameter; it is missing." ); - } - } - else - { - foundPatchFiles.remove( patch ); + foundPatchFiles.remove( patch ); - patchesApplied.put( patch, createPatchCommand( patchFile ) ); + patchesApplied.put( patch, createPatchCommand( patchFile ) ); + } } } @@ -341,11 +353,12 @@ try { + getLog().info( "Applying patch: " + patchName ); int result = CommandLineUtils.executeCommandLine( cli, consumer, consumer ); if ( result != 0 ) { - throw new MojoExecutionException( "Patch command failed (exit value != 0). Please see debug output for more information." ); + throw new MojoExecutionException( "Patch command failed (exit value != 0) for " + patchName + ". Please see debug output for more information." ); } } catch ( CommandLineException e ) @@ -364,10 +377,17 @@ FileWriter writer = null; try { - writer = new FileWriter( patchTrackingFile ); - + boolean appending = patchTrackingFile.exists(); + + writer = new FileWriter( patchTrackingFile, appending ); + for ( Iterator it = patchesApplied.keySet().iterator(); it.hasNext(); ) { + if ( appending ) + { + writer.write( System.getProperty( "line.separator" ) ); + } + String patch = (String) it.next(); writer.write( patch );