You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/06/14 14:24:54 UTC
[camel] 01/02: Revert "Simplify the SyncPropertiesMojo and make it work with maven 4"
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 3d970c560a0d06ecb04c86fc82dad01eac5e1319
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Jun 14 16:12:37 2023 +0200
Revert "Simplify the SyncPropertiesMojo and make it work with maven 4"
This reverts commit 82b8cf1f28252bb7fc26bfd37df6219f3fd46b37.
---
.../maven/sync/properties/SyncPropertiesMojo.java | 86 ++++++++++++++++------
.../main/resources/camel-dependencies-template.xml | 6 +-
2 files changed, 68 insertions(+), 24 deletions(-)
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 1226b5f5a9c..d2471d535eb 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
@@ -17,14 +17,21 @@
package org.apache.camel.maven.sync.properties;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.InputStream;
import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+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;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
@@ -32,7 +39,6 @@ import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.util.ReaderFactory;
/**
* Copy the properties from a source POM to a different destination POM for syncing purposes.
@@ -59,23 +65,67 @@ public class SyncPropertiesMojo extends AbstractMojo {
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 {
- String sourceStr = IOHelper.toString(ReaderFactory.newXmlReader(Files.newInputStream(sourcePom.toPath())));
- String targetStr = IOHelper.toString(ReaderFactory
- .newXmlReader(SyncPropertiesMojo.class.getResourceAsStream("/camel-dependencies-template.xml")));
+ Properties parentProp;
+ String generatedVersion;
- String version = findGroup(sourceStr, "<parent>.*?(?<v><version>.*?</version>).*?</parent>", "v");
- String properties = findGroup(sourceStr, "(?<p><properties>.*?</properties>)", "p");
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("Reading source file " + sourcePom.toPath());
+ }
+
+ try (FileReader reader = new FileReader(sourcePom)) {
+ MavenXpp3Reader mavenReader = new MavenXpp3Reader();
+ Model model = mavenReader.read(reader);
+
+ MavenProject sourceProject = new MavenProject(model);
+ parentProp = sourceProject.getProperties();
+ generatedVersion = sourceProject.getVersion();
+ }
+
+ InputStream is = null;
+ try {
+ is = SyncPropertiesMojo.class.getResourceAsStream("/camel-dependencies-template.xml");
+ MavenXpp3Reader mavenReader = new MavenXpp3Reader();
+ Model model = mavenReader.read(is);
+
+ // sort the properties
+ OrderedProperties op = new OrderedProperties();
+ op.putAll(new TreeMap<>(parentProp));
+
+ MavenProject targetProject = new MavenProject(model);
+ targetProject.getModel().setProperties(op);
- version = version.replaceAll("\\$", "\\\\\\$");
- properties = properties.replaceAll("\\$", "\\\\\\$");
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("Set version of target pom to " + generatedVersion);
+ }
+ targetProject.setVersion(generatedVersion);
- targetStr = targetStr.replaceFirst("\\Q<version>@version@</version>\\E", version);
- targetStr = targetStr.replaceFirst("\\Q<properties>@properties@</properties>\\E", properties);
+ MavenXpp3Writer mavenWriter = new MavenXpp3Writer();
+ mavenWriter.write(new FileWriter(targetPom), model);
+ } finally {
+ IOHelper.close(is);
+ }
+
+ // add license header in top
+ getLog().debug("Add license header...");
+ String text = IOHelper.loadText(new FileInputStream(targetPom));
+ String text2 = IOHelper.loadText(new FileInputStream(licenseHeader));
+ StringBuilder sb = new StringBuilder(text);
+ int pos = sb.indexOf("<project");
+ sb.insert(pos, text2);
+
+ // avoid annoying http -> https change when rebuilding
+ 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");
+
+ // avoid IDE complaining about empty tag
+ out = out.replace("<relativePath></relativePath>", "<relativePath />");
// write lines
- boolean updated = FileUtil.updateFile(targetPom.toPath(), targetStr, StandardCharsets.UTF_8);
+ boolean updated = FileUtil.updateFile(targetPom.toPath(), out, StandardCharsets.UTF_8);
if (updated) {
getLog().info("Updated: " + targetPom);
}
@@ -85,12 +135,4 @@ public class SyncPropertiesMojo extends AbstractMojo {
}
}
- private String findGroup(String str, String regex, String group) {
- Matcher m = Pattern.compile(regex, Pattern.DOTALL).matcher(str);
- if (m.find()) {
- return m.group(group);
- }
- return str;
- }
-
}
diff --git a/tooling/maven/sync-properties-maven-plugin/src/main/resources/camel-dependencies-template.xml b/tooling/maven/sync-properties-maven-plugin/src/main/resources/camel-dependencies-template.xml
index 88f5174071e..a79e851e05e 100644
--- a/tooling/maven/sync-properties-maven-plugin/src/main/resources/camel-dependencies-template.xml
+++ b/tooling/maven/sync-properties-maven-plugin/src/main/resources/camel-dependencies-template.xml
@@ -30,13 +30,15 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-dependencies</artifactId>
- <version>@version@</version>
+ <version>3.21.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Camel :: Dependencies</name>
<description>Camel Dependencies POM</description>
<!-- sync properties here from parent/pom.xml -->
- <properties>@properties@</properties>
+ <properties>
+
+ </properties>
</project>