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;
+ }
+
}