From 3d87ef5ab8eb5446b15e25cc6a0e6861f3f82b6d Mon Sep 17 00:00:00 2001 From: Dekel Pilli Date: Thu, 9 Apr 2020 18:32:15 +1000 Subject: [PATCH 1/3] Adding file merging features --- .../WritePropertiesFileMojo.java | 43 +++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/internetitem/maven/writePropertiesFile/WritePropertiesFileMojo.java b/src/main/java/com/internetitem/maven/writePropertiesFile/WritePropertiesFileMojo.java index 32219e1..f1b944d 100644 --- a/src/main/java/com/internetitem/maven/writePropertiesFile/WritePropertiesFileMojo.java +++ b/src/main/java/com/internetitem/maven/writePropertiesFile/WritePropertiesFileMojo.java @@ -2,6 +2,7 @@ import java.io.File; import java.io.FileOutputStream; +import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.nio.charset.Charset; @@ -53,7 +54,21 @@ public class WritePropertiesFileMojo extends AbstractMojo { @Parameter(property = "createDirectory", defaultValue = "true") private boolean createDirectory; + /** + * If properties already exist at the given output, we the results be combined (defaults to false) + */ + @Parameter(property = "mergeProperties", defaultValue = "false") + private boolean mergeProperties; + + /** + * Whether or not provided properties take precedence over existing properties (does nothing if mergeProperties is false, defaults to true) + */ + @Parameter(property = "overrideProperties", defaultValue = "true") + private boolean overrideProperties; + public void execute() throws MojoExecutionException, MojoFailureException { + System.out.println("mergeProperties: " + mergeProperties); + System.out.println("overrideProperties: " + overrideProperties); File finalFile = new File(outputDirectory, filename).getAbsoluteFile(); String finalFilename = finalFile.getAbsolutePath(); File finalDirectory = finalFile.getParentFile(); @@ -67,14 +82,15 @@ public void execute() throws MojoExecutionException, MojoFailureException { getLog().info("Saving properties to file " + finalFilename); FileOutputStream out = null; try { - out = new FileOutputStream(finalFile); - OutputStreamWriter writer = new OutputStreamWriter(out, Charset.forName("UTF-8")); String finalComment = comment; if (comment != null && comment.trim().isEmpty()) { finalComment = null; } - properties.store(writer, finalComment); + Properties propertiesToWrite = obtainPotentiallyMergedProperties(finalFile); + out = new FileOutputStream(finalFile); + OutputStreamWriter writer = new OutputStreamWriter(out, Charset.forName("UTF-8")); + propertiesToWrite.store(writer, finalComment); writer.close(); out.close(); } catch (IOException e) { @@ -90,4 +106,25 @@ public void execute() throws MojoExecutionException, MojoFailureException { } } + private Properties obtainPotentiallyMergedProperties(File propertiesFile) throws MojoExecutionException { + if (!mergeProperties || !propertiesFile.exists()) { + return properties; + } + Properties preExistingProperties = new Properties(); + try { + FileInputStream fileInputStream = new FileInputStream(propertiesFile); + preExistingProperties.load(fileInputStream); + fileInputStream.close(); + } catch (IOException e) { + throw new MojoExecutionException("Error loading pre-existing properties file " + propertiesFile, e); + } + return overrideProperties + ? mergeProperties(preExistingProperties, properties) + : mergeProperties(properties, preExistingProperties); + } + + private Properties mergeProperties(Properties lowPriorityProperties, Properties highPriorityProperties) { + lowPriorityProperties.putAll(highPriorityProperties); + return lowPriorityProperties; + } } From c2a153e3211492d07962327f7c8829746f8c4e50 Mon Sep 17 00:00:00 2001 From: Dekel Pilli Date: Thu, 9 Apr 2020 18:33:32 +1000 Subject: [PATCH 2/3] Removing prints --- .../maven/writePropertiesFile/WritePropertiesFileMojo.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/internetitem/maven/writePropertiesFile/WritePropertiesFileMojo.java b/src/main/java/com/internetitem/maven/writePropertiesFile/WritePropertiesFileMojo.java index f1b944d..531f362 100644 --- a/src/main/java/com/internetitem/maven/writePropertiesFile/WritePropertiesFileMojo.java +++ b/src/main/java/com/internetitem/maven/writePropertiesFile/WritePropertiesFileMojo.java @@ -67,8 +67,6 @@ public class WritePropertiesFileMojo extends AbstractMojo { private boolean overrideProperties; public void execute() throws MojoExecutionException, MojoFailureException { - System.out.println("mergeProperties: " + mergeProperties); - System.out.println("overrideProperties: " + overrideProperties); File finalFile = new File(outputDirectory, filename).getAbsoluteFile(); String finalFilename = finalFile.getAbsolutePath(); File finalDirectory = finalFile.getParentFile(); From f33b5f5a41594de40a9a203d7d7fe426addcd1e9 Mon Sep 17 00:00:00 2001 From: Dekel Pilli Date: Wed, 15 Apr 2020 10:28:33 +1000 Subject: [PATCH 3/3] Fromatting fix --- .../maven/writePropertiesFile/WritePropertiesFileMojo.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/internetitem/maven/writePropertiesFile/WritePropertiesFileMojo.java b/src/main/java/com/internetitem/maven/writePropertiesFile/WritePropertiesFileMojo.java index 531f362..23f83b2 100644 --- a/src/main/java/com/internetitem/maven/writePropertiesFile/WritePropertiesFileMojo.java +++ b/src/main/java/com/internetitem/maven/writePropertiesFile/WritePropertiesFileMojo.java @@ -116,9 +116,9 @@ private Properties obtainPotentiallyMergedProperties(File propertiesFile) throws } catch (IOException e) { throw new MojoExecutionException("Error loading pre-existing properties file " + propertiesFile, e); } - return overrideProperties - ? mergeProperties(preExistingProperties, properties) - : mergeProperties(properties, preExistingProperties); + return overrideProperties + ? mergeProperties(preExistingProperties, properties) + : mergeProperties(properties, preExistingProperties); } private Properties mergeProperties(Properties lowPriorityProperties, Properties highPriorityProperties) {