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:45 UTC

[maven-shared-incremental] branch store-last-compilation-success created (now a17d476)

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

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


      at a17d476  store last compilation time

This branch includes the following new commits:

     new a17d476  store last compilation time

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



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

Posted by ol...@apache.org.
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;
+    }
+
 }