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 2022/10/21 09:06:52 UTC
[camel] branch main updated: CAMEL-18609: camel-jbang - Export should sort dependencies in pom.xml
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 89424f57619 CAMEL-18609: camel-jbang - Export should sort dependencies in pom.xml
89424f57619 is described below
commit 89424f5761942f43d170ae0521daf3791777b076
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Oct 21 11:06:38 2022 +0200
CAMEL-18609: camel-jbang - Export should sort dependencies in pom.xml
---
.../camel/dsl/jbang/core/commands/Export.java | 35 ++++++++++++++++++++++
.../dsl/jbang/core/commands/ExportCamelMain.java | 25 +++++++++++-----
.../dsl/jbang/core/commands/ExportQuarkus.java | 29 +++++++++++-------
.../dsl/jbang/core/commands/ExportSpringBoot.java | 28 +++++++++++------
4 files changed, 90 insertions(+), 27 deletions(-)
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
index 12d95034297..bfced95c678 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
@@ -17,9 +17,11 @@
package org.apache.camel.dsl.jbang.core.commands;
import java.io.File;
+import java.util.Comparator;
import java.util.Properties;
import org.apache.camel.dsl.jbang.core.common.RuntimeUtil;
+import org.apache.camel.main.download.MavenGav;
import org.apache.camel.util.CamelCaseOrderedProperties;
import picocli.CommandLine.Command;
@@ -101,4 +103,37 @@ class Export extends ExportBaseCommand {
return cmd.export();
}
+ public Comparator<MavenGav> mavenGavComparator() {
+ return new Comparator<MavenGav>() {
+ @Override
+ public int compare(MavenGav o1, MavenGav o2) {
+ int r1 = rankGroupId(o1);
+ int r2 = rankGroupId(o2);
+
+ if (r1 > r2) {
+ return -1;
+ } else if (r2 > r1) {
+ return 1;
+ } else {
+ return o1.toString().compareTo(o2.toString());
+ }
+ }
+
+ int rankGroupId(MavenGav o1) {
+ String g1 = o1.getGroupId();
+ if ("org.apache.camel.quarkus".equals(g1)) {
+ return 10;
+ } else if ("org.apache.camel.springboot".equals(g1)) {
+ return 10;
+ } else if ("org.apache.camel.kamelets".equals(g1)) {
+ return 9;
+ } else if ("org.apache.camel".equals(g1)) {
+ return 8;
+ } else {
+ return 0;
+ }
+ }
+ };
+ }
+
}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
index e7512cd8b85..769b24b2f69 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
@@ -19,6 +19,8 @@ package org.apache.camel.dsl.jbang.core.commands;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Properties;
import java.util.Set;
@@ -148,20 +150,27 @@ class ExportCamelMain extends Export {
context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", sb.toString());
}
- StringBuilder sb = new StringBuilder();
+ List<MavenGav> gavs = new ArrayList<>();
for (String dep : deps) {
MavenGav gav = MavenGav.parseGav(dep);
String gid = gav.getGroupId();
- String aid = gav.getArtifactId();
- String v = gav.getVersion();
if ("org.apache.camel".equals(gid)) {
- v = null; // use version from bom
+ // uses BOM so version should not be included
+ gav.setVersion(null);
}
+ gavs.add(gav);
+ }
+
+ // sort artifacts
+ gavs.sort(mavenGavComparator());
+
+ StringBuilder sb = new StringBuilder();
+ for (MavenGav gav : gavs) {
sb.append(" <dependency>\n");
- sb.append(" <groupId>").append(gid).append("</groupId>\n");
- sb.append(" <artifactId>").append(aid).append("</artifactId>\n");
- if (v != null) {
- sb.append(" <version>").append(v).append("</version>\n");
+ sb.append(" <groupId>").append(gav.getGroupId()).append("</groupId>\n");
+ sb.append(" <artifactId>").append(gav.getArtifactId()).append("</artifactId>\n");
+ if (gav.getVersion() != null) {
+ sb.append(" <version>").append(gav.getVersion()).append("</version>\n");
}
sb.append(" </dependency>\n");
}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
index d0df64322e7..078032b0c15 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
@@ -19,6 +19,8 @@ package org.apache.camel.dsl.jbang.core.commands;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Properties;
import java.util.Set;
@@ -186,31 +188,38 @@ class ExportQuarkus extends Export {
context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", sb.toString());
}
- StringBuilder sb = new StringBuilder();
+ List<MavenGav> gavs = new ArrayList<>();
for (String dep : deps) {
MavenGav gav = MavenGav.parseGav(dep);
String gid = gav.getGroupId();
String aid = gav.getArtifactId();
- String v = gav.getVersion();
// transform to camel-quarkus extension GAV
if ("org.apache.camel".equals(gid)) {
String qaid = aid.replace("camel-", "camel-quarkus-");
ArtifactModel<?> am = catalog.modelFromMavenGAV("org.apache.camel.quarkus", qaid, null);
if (am != null) {
// use quarkus extension
- gid = am.getGroupId();
- aid = am.getArtifactId();
- v = null; // uses BOM so version should not be included
+ gav.setGroupId(am.getGroupId());
+ gav.setArtifactId(am.getArtifactId());
+ gav.setVersion(null); // uses BOM so version should not be included
} else {
// there is no quarkus extension so use plain camel
- v = camelVersion;
+ gav.setVersion(camelVersion);
}
}
+ gavs.add(gav);
+ }
+
+ // sort artifacts
+ gavs.sort(mavenGavComparator());
+
+ StringBuilder sb = new StringBuilder();
+ for (MavenGav gav : gavs) {
sb.append(" <dependency>\n");
- sb.append(" <groupId>").append(gid).append("</groupId>\n");
- sb.append(" <artifactId>").append(aid).append("</artifactId>\n");
- if (v != null) {
- sb.append(" <version>").append(v).append("</version>\n");
+ sb.append(" <groupId>").append(gav.getGroupId()).append("</groupId>\n");
+ sb.append(" <artifactId>").append(gav.getArtifactId()).append("</artifactId>\n");
+ if (gav.getVersion() != null) {
+ sb.append(" <version>").append(gav.getVersion()).append("</version>\n");
}
sb.append(" </dependency>\n");
}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
index befcdf202fc..694bd5e5583 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
@@ -20,6 +20,8 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Properties;
import java.util.Set;
@@ -151,7 +153,7 @@ class ExportSpringBoot extends Export {
context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", sb.toString());
}
- StringBuilder sb = new StringBuilder();
+ List<MavenGav> gavs = new ArrayList<>();
for (String dep : deps) {
MavenGav gav = MavenGav.parseGav(dep);
String gid = gav.getGroupId();
@@ -163,19 +165,27 @@ class ExportSpringBoot extends Export {
ArtifactModel<?> am = catalog.modelFromMavenGAV("org.apache.camel.springboot", aid + "-starter", null);
if (am != null) {
// use spring-boot starter
- gid = am.getGroupId();
- aid = am.getArtifactId();
- v = null; // uses BOM so version should not be included
+ gav.setGroupId(am.getGroupId());
+ gav.setArtifactId(am.getArtifactId());
+ gav.setVersion(null); // uses BOM so version should not be included
} else {
// there is no spring boot starter so use plain camel
- v = camelVersion;
+ gav.setVersion(camelVersion);
}
}
+ gavs.add(gav);
+ }
+
+ // sort artifacts
+ gavs.sort(mavenGavComparator());
+
+ StringBuilder sb = new StringBuilder();
+ for (MavenGav gav : gavs) {
sb.append(" <dependency>\n");
- sb.append(" <groupId>").append(gid).append("</groupId>\n");
- sb.append(" <artifactId>").append(aid).append("</artifactId>\n");
- if (v != null) {
- sb.append(" <version>").append(v).append("</version>\n");
+ sb.append(" <groupId>").append(gav.getGroupId()).append("</groupId>\n");
+ sb.append(" <artifactId>").append(gav.getArtifactId()).append("</artifactId>\n");
+ if (gav.getVersion() != null) {
+ sb.append(" <version>").append(gav.getVersion()).append("</version>\n");
}
sb.append(" </dependency>\n");
}