You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sj...@apache.org on 2022/10/06 20:42:52 UTC

[maven-ear-plugin] 01/01: [MEAR-319] Remove generated MANIFEST from outdatedResources

This is an automated email from the ASF dual-hosted git repository.

sjaranowski pushed a commit to branch MEAR-319
in repository https://gitbox.apache.org/repos/asf/maven-ear-plugin.git

commit 0b8a3a93eaf34605adb501d4041ac95b737a9925
Author: Slawomir Jaranowski <s....@gmail.com>
AuthorDate: Thu Oct 6 22:29:01 2022 +0200

    [MEAR-319] Remove generated MANIFEST from outdatedResources
---
 .../java/org/apache/maven/plugins/ear/EarMojo.java | 47 ++++++++++++++--------
 1 file changed, 31 insertions(+), 16 deletions(-)

diff --git a/src/main/java/org/apache/maven/plugins/ear/EarMojo.java b/src/main/java/org/apache/maven/plugins/ear/EarMojo.java
index b122254..47e7659 100644
--- a/src/main/java/org/apache/maven/plugins/ear/EarMojo.java
+++ b/src/main/java/org/apache/maven/plugins/ear/EarMojo.java
@@ -476,7 +476,7 @@ public class EarMojo
 
                     if ( module.changeManifestClasspath() )
                     {
-                        changeManifestClasspath( module, destinationFile, javaEEVersion );
+                        changeManifestClasspath( module, destinationFile, javaEEVersion, outdatedResources );
                     }
                 }
                 else
@@ -489,7 +489,7 @@ public class EarMojo
                             LinkOption.NOFOLLOW_LINKS, StandardCopyOption.REPLACE_EXISTING );
                         if ( module.changeManifestClasspath() )
                         {
-                            changeManifestClasspath( module, destinationFile, javaEEVersion );
+                            changeManifestClasspath( module, destinationFile, javaEEVersion, outdatedResources );
                         }
                     }
                     else
@@ -689,19 +689,16 @@ public class EarMojo
     public void unpack( File source, final File destDir, final Collection<String> outdatedResources )
         throws ArchiverException, NoSuchArchiverException, IOException
     {
+        Path destPath = destDir.toPath();
+
         UnArchiver unArchiver = archiverManager.getUnArchiver( "zip" );
         unArchiver.setSourceFile( source );
         unArchiver.setDestDirectory( destDir );
         unArchiver.setFileMappers( new FileMapper[] {
-            new FileMapper()
+            pName ->
             {
-                @Override
-                public String getMappedFileName( String pName )
-                {
-                    Path destFile = destDir.toPath().resolve( pName );
-                    outdatedResources.remove( getWorkDirectory().toPath().relativize( destFile ).toString() );
-                    return pName;
-                }
+                removeFromOutdatedResources( destPath.resolve( pName ), outdatedResources );
+                return pName;
             }
         } );
 
@@ -768,7 +765,8 @@ public class EarMojo
         return filterWrappers;
     }
 
-    private void changeManifestClasspath( EarModule module, File original, JavaEEVersion javaEEVersion )
+    private void changeManifestClasspath( EarModule module, File original, JavaEEVersion javaEEVersion,
+                                          Collection<String> outdatedResources )
         throws MojoFailureException
     {
         final String moduleLibDir = module.getLibDir();
@@ -955,6 +953,8 @@ public class EarMojo
                 {
                     mf.write( writer );
                 }
+
+                removeFromOutdatedResources( manifestFile.toPath(), outdatedResources );
             }
 
             if ( original.isFile() )
@@ -983,8 +983,7 @@ public class EarMojo
         // Read the manifest from disk
         try ( FileInputStream in = new FileInputStream( manifestFile ) )
         {
-            Manifest manifest = new Manifest( in );
-            return manifest;
+            return new Manifest( in );
         }
     }
 
@@ -1012,23 +1011,39 @@ public class EarMojo
                 getLog().warn( "Can't detect outdated resources", e );
             } 
         }
+
+        getLog().debug( "initOutdatedResources: " + outdatedResources );
         return outdatedResources;
     }
 
     private void deleteOutdatedResources( final Collection<String> outdatedResources )
     {
+        getLog().debug( "deleteOutdatedResources: " + outdatedResources );
         final long startTime = session.getStartTime().getTime();
-        
+
+        getLog().debug( "deleteOutdatedResources session startTime: " + startTime );
+
         for ( String outdatedResource : outdatedResources )
         {
-            if ( new File( getWorkDirectory(), outdatedResource ).lastModified() < startTime )
+            File resourceFile = new File( getWorkDirectory(), outdatedResource );
+            if ( resourceFile.lastModified() < startTime )
             {
                 getLog().info( "deleting outdated resource " + outdatedResource );
-                new File( getWorkDirectory(), outdatedResource ).delete();
+                getLog().debug( outdatedResource + " last modified: " + resourceFile.lastModified() );
+                resourceFile.delete();
             }
         }
     }
 
+    private void removeFromOutdatedResources( Path destination, Collection<String> outdatedResources )
+    {
+        Path relativeDestFile = getWorkDirectory().toPath().relativize( destination );
+        if ( outdatedResources.remove( relativeDestFile.toString() ) )
+        {
+            getLog().debug( "Remove from outdatedResources: " + relativeDestFile );
+        }
+    }
+
     /**
      * Searches for the given JAR module in the list of classpath elements. If JAR module is found among specified
      * classpath elements then returns index of first matching element. Returns -1 otherwise.