You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2022/12/13 20:57:46 UTC

[maven-shared-incremental] 01/01: store last compilation time

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

olamy pushed a commit to branch store-last-compilation-success
in repository https://gitbox.apache.org/repos/asf/maven-shared-incremental.git

commit a17d47656babd2ca0861a9e469cd24ca60f0b822
Author: Olivier Lamy <ol...@apache.org>
AuthorDate: Wed Dec 14 06:57:25 2022 +1000

    store last compilation time
    
    Signed-off-by: Olivier Lamy <ol...@apache.org>
---
 .../shared/incremental/IncrementalBuildHelper.java | 69 ++++++++++++++++++++++
 .../incremental/IncrementalBuildHelperRequest.java | 14 +++++
 2 files changed, 83 insertions(+)

diff --git a/src/main/java/org/apache/maven/shared/incremental/IncrementalBuildHelper.java b/src/main/java/org/apache/maven/shared/incremental/IncrementalBuildHelper.java
index 78d09af..bca48f9 100644
--- a/src/main/java/org/apache/maven/shared/incremental/IncrementalBuildHelper.java
+++ b/src/main/java/org/apache/maven/shared/incremental/IncrementalBuildHelper.java
@@ -31,6 +31,10 @@ import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.util.Properties;
 import java.util.Set;
 
 /**
@@ -48,6 +52,13 @@ public class IncrementalBuildHelper
     public static final String CREATED_FILES_LST_FILENAME = "createdFiles.lst";
     private static final String INPUT_FILES_LST_FILENAME = "inputFiles.lst";
 
+    private static final String INFO_FILENAME = "info.properties";
+
+    private static final String LAST_COMPILE_SUCCESS_TIMESTAMP = "lastCompile.success.timestamp";
+
+    private static final String LAST_TEST_COMPILE_SUCCESS_TIMESTAMP = "lastTestCompile.success.timestamp";
+
+
     private static final String[] EMPTY_ARRAY = new String[0];
 
     /**
@@ -355,7 +366,65 @@ public class IncrementalBuildHelper
                 throw new MojoExecutionException( "Error while storing the mojo status", e );
             }
         }
+    }
 
+    public void afterCompilationSuccess( IncrementalBuildHelperRequest incrementalBuildHelperRequest )
+            throws MojoExecutionException
+    {
+        File mojoConfigBase = getMojoStatusDirectory();
+        File mojoConfigFile = new File( mojoConfigBase, INFO_FILENAME );
+
+        try
+        {
+            if ( !Files.exists( mojoConfigFile.toPath( ) ) )
+            {
+                Files.createFile( mojoConfigFile.toPath() );
+            }
+            Properties properties = new Properties();
+            try ( InputStream inputStream = Files.newInputStream( mojoConfigFile.toPath( ) ) )
+            {
+                properties.load( inputStream );
+                properties.put( incrementalBuildHelperRequest.isTest()
+                                ? LAST_TEST_COMPILE_SUCCESS_TIMESTAMP : LAST_COMPILE_SUCCESS_TIMESTAMP,
+                        Long.toString( System.currentTimeMillis( ) ) );
+            }
+
+            try ( OutputStream outputStream = Files.newOutputStream( mojoConfigFile.toPath( ) ) )
+            {
+                String comments = "Execution of: "
+                        + mojoExecution.getMojoDescriptor().getPluginDescriptor().getArtifactId() + "-"
+                        + mojoExecution.getMojoDescriptor().getGoal() + "-" + mojoExecution.getExecutionId();
+                properties.store( outputStream, comments );
+            }
+        }
+        catch ( IOException e )
+        {
+            throw new MojoExecutionException( e.getMessage(), e );
+        }
+    }
+
+    /**
+     *
+     * @param incrementalBuildHelperRequest
+     * @return return timestamp of the last compilation succes or <code>0</code> if cannot find the information
+     */
+    public long getLastCompilationSuccess( IncrementalBuildHelperRequest incrementalBuildHelperRequest )
+            throws MojoExecutionException, IOException
+    {
+        File mojoConfigBase = getMojoStatusDirectory();
+        File mojoConfigFile = new File( mojoConfigBase, INFO_FILENAME );
+        if ( !Files.exists( mojoConfigFile.toPath( ) ) )
+        {
+            return 0;
+        }
+        Properties properties = new Properties();
+        try ( InputStream inputStream = Files.newInputStream( mojoConfigFile.toPath() ) )
+        {
+            properties.load( inputStream );
+            String value = properties.getProperty( incrementalBuildHelperRequest.isTest()
+                    ? LAST_TEST_COMPILE_SUCCESS_TIMESTAMP : LAST_COMPILE_SUCCESS_TIMESTAMP, "0" );
+            return Long.parseLong( value );
+        }
     }
 
     private String[] toArrayOfPath( Set<File> files )
diff --git a/src/main/java/org/apache/maven/shared/incremental/IncrementalBuildHelperRequest.java b/src/main/java/org/apache/maven/shared/incremental/IncrementalBuildHelperRequest.java
index 07ef1ab..fb3339d 100644
--- a/src/main/java/org/apache/maven/shared/incremental/IncrementalBuildHelperRequest.java
+++ b/src/main/java/org/apache/maven/shared/incremental/IncrementalBuildHelperRequest.java
@@ -33,6 +33,8 @@ public class IncrementalBuildHelperRequest
 
     private File outputDirectory;
 
+    private boolean test;
+
     public IncrementalBuildHelperRequest()
     {
         // no op
@@ -73,4 +75,16 @@ public class IncrementalBuildHelperRequest
         this.outputDirectory = outputDirectory;
         return this;
     }
+
+    public boolean isTest()
+    {
+        return this.test;
+    }
+
+    public IncrementalBuildHelperRequest test( boolean test )
+    {
+        this.test = test;
+        return this;
+    }
+
 }