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

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 97167a1  Attempt to fix releasing Apache Camel in the 
camel-dependencies sync generator.
97167a1 is described below

commit 97167a18aca7d49f42c881020b0dad0ce517ac45
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Mon Jan 31 15:03:29 2022 +0100

    Attempt to fix releasing Apache Camel in the camel-dependencies sync 
generator.
---
 tooling/maven/sync-properties-maven-plugin/pom.xml |  4 ++
 .../maven/sync/properties/SyncPropertiesMojo.java  | 49 ++++++++++------------
 2 files changed, 27 insertions(+), 26 deletions(-)

diff --git a/tooling/maven/sync-properties-maven-plugin/pom.xml 
b/tooling/maven/sync-properties-maven-plugin/pom.xml
index da3a8a4..6c99f7c 100644
--- a/tooling/maven/sync-properties-maven-plugin/pom.xml
+++ b/tooling/maven/sync-properties-maven-plugin/pom.xml
@@ -51,6 +51,10 @@
             <artifactId>camel-util</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-tooling-util</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.maven.resolver</groupId>
             <artifactId>maven-resolver-api</artifactId>
         </dependency>
diff --git 
a/tooling/maven/sync-properties-maven-plugin/src/main/java/org/apache/camel/maven/sync/properties/SyncPropertiesMojo.java
 
b/tooling/maven/sync-properties-maven-plugin/src/main/java/org/apache/camel/maven/sync/properties/SyncPropertiesMojo.java
index 1fbc19c..b7ea3e7 100644
--- 
a/tooling/maven/sync-properties-maven-plugin/src/main/java/org/apache/camel/maven/sync/properties/SyncPropertiesMojo.java
+++ 
b/tooling/maven/sync-properties-maven-plugin/src/main/java/org/apache/camel/maven/sync/properties/SyncPropertiesMojo.java
@@ -18,13 +18,15 @@ package org.apache.camel.maven.sync.properties;
 
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.Properties;
 import java.util.TreeMap;
 
+import org.apache.camel.tooling.util.FileUtil;
+import org.apache.camel.tooling.util.PackageHelper;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.OrderedProperties;
 import org.apache.maven.model.Model;
@@ -45,19 +47,10 @@ import org.apache.maven.project.MavenProject;
 public class SyncPropertiesMojo extends AbstractMojo {
 
     /**
-     * The source POM file from which the required properties should be copied.
+     * The base directory
      */
-    @Parameter(defaultValue = "${basedir}/../../parent/pom.xml")
-    protected File sourcePom;
-
-    @Parameter(defaultValue = "${basedir}/../../camel-dependencies/pom.xml")
-    protected File targetPom;
-
-    /**
-     * The license header file that should be inserted at the top of the 
destination POM file.
-     */
-    @Parameter(defaultValue = "${basedir}/../../etc/apache-header.xml")
-    protected File licenseHeader;
+    @Parameter(defaultValue = "${project.basedir}")
+    protected File baseDir;
 
     /**
      * The Maven project.
@@ -67,12 +60,18 @@ public class SyncPropertiesMojo extends AbstractMojo {
 
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
+        File dir = PackageHelper.findCamelDirectory(baseDir, "parent");
+        File sourcePom = new File(dir, "pom.xml");
+        dir = PackageHelper.findCamelDirectory(baseDir, "camel-dependencies");
+        File targetPom = new File(dir, "pom.xml");
+        dir = PackageHelper.findCamelDirectory(baseDir, "etc");
+        File licenseHeader = new File(dir, "apache-header.xml");
+
         try {
             Properties parentProp;
             String generatedVersion;
-            String artifactId = "camel-dependencies";
 
-            getLog().info("Reading source file " + sourcePom.toPath());
+            getLog().debug("Reading source file " + sourcePom.toPath());
             try (FileReader reader = new FileReader(sourcePom)) {
                 MavenXpp3Reader mavenReader = new MavenXpp3Reader();
                 Model model = mavenReader.read(reader);
@@ -88,14 +87,14 @@ public class SyncPropertiesMojo extends AbstractMojo {
                 MavenXpp3Reader mavenReader = new MavenXpp3Reader();
                 Model model = mavenReader.read(is);
 
-                // lets sort the properties
+                // sort the properties
                 OrderedProperties op = new OrderedProperties();
                 op.putAll(new TreeMap<>(parentProp));
 
                 MavenProject targetProject = new MavenProject(model);
                 targetProject.getModel().setProperties(op);
 
-                getLog().info("Set version of target pom to " + 
generatedVersion);
+                getLog().debug("Set version of target pom to " + 
generatedVersion);
                 targetProject.setVersion(generatedVersion);
 
                 MavenXpp3Writer mavenWriter = new MavenXpp3Writer();
@@ -105,26 +104,24 @@ public class SyncPropertiesMojo extends AbstractMojo {
             }
 
             // add license header in top
-            getLog().info("Add license header...");
+            getLog().debug("Add license header...");
             String text = IOHelper.loadText(new FileInputStream(targetPom));
             String text2 = IOHelper.loadText(new 
FileInputStream(licenseHeader));
-            StringBuffer sb = new StringBuffer(text);
+            StringBuilder sb = new StringBuilder(text);
             int pos = sb.indexOf("<project");
             sb.insert(pos, text2);
 
             // avoid annoying http -> https change when rebuilding
-            getLog().info("Replacing xsd location ...");
+            getLog().debug("Replacing xsd location ...");
             String out = sb.toString();
             out = out.replace("https://maven.apache.org/xsd/maven-4.0.0.xsd";, 
"http://maven.apache.org/xsd/maven-4.0.0.xsd";);
 
             // write lines
-            getLog().info("Writing lines to " + targetPom.toPath());
-            try (FileOutputStream outputStream = new 
FileOutputStream(targetPom)) {
-                byte[] strToBytes = out.getBytes();
-                outputStream.write(strToBytes);
+            boolean updated = FileUtil.updateFile(targetPom.toPath(), out, 
StandardCharsets.UTF_8);
+            if (updated) {
+                getLog().info("Updated: " + targetPom);
             }
-
-            getLog().info("Finished.");
+            getLog().debug("Finished.");
         } catch (Exception ex) {
             throw new MojoExecutionException("Cannot copy the properties 
between POMs", ex);
         }

Reply via email to