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/04/11 13:52:29 UTC

[camel] branch camel-3.20.x updated: CAMEL-19108: camel-jbang - Export to support local lib JAR via systemPath in Maven pom.xml

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

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


The following commit(s) were added to refs/heads/camel-3.20.x by this push:
     new 18e2365d0b9 CAMEL-19108: camel-jbang - Export to support local lib JAR via systemPath in Maven pom.xml
18e2365d0b9 is described below

commit 18e2365d0b9133a8eab1c5368a0789624cfab091
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Apr 11 15:43:53 2023 +0200

    CAMEL-19108: camel-jbang - Export to support local lib JAR via systemPath in Maven pom.xml
---
 .../dsl/jbang/core/commands/ExportBaseCommand.java | 46 ++++++++++++++++++++++
 .../dsl/jbang/core/commands/ExportCamelMain.java   | 12 +++++-
 .../dsl/jbang/core/commands/ExportQuarkus.java     | 10 ++++-
 .../dsl/jbang/core/commands/ExportSpringBoot.java  | 10 ++++-
 4 files changed, 74 insertions(+), 4 deletions(-)

diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
index 7084300bf93..db51f45b1dd 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
@@ -289,6 +289,14 @@ abstract class ExportBaseCommand extends CamelCommand {
                         answer.add("org.apache.camel.kamelets:camel-kamelets:" + kameletsVersion);
                     }
                 }
+            } else if (line.startsWith("camel.jbang.classpathFiles")) {
+                String deps = StringHelper.after(line, "camel.jbang.classpathFiles=");
+                for (String d : deps.split(",")) {
+                    // special to include local JARs in export lib folder
+                    if (d.endsWith(".jar")) {
+                        answer.add("lib:" + d.trim());
+                    }
+                }
             } else if (line.startsWith("camel.main.routesIncludePattern=")) {
                 String routes = StringHelper.after(line, "camel.main.routesIncludePattern=");
                 for (String r : routes.split(",")) {
@@ -645,4 +653,42 @@ abstract class ExportBaseCommand extends CamelCommand {
         return matcher.find() ? matcher.group(1) : null;
     }
 
+    protected static MavenGav parseMavenGav(String dep) {
+        MavenGav gav;
+        if (dep.startsWith("lib:")) {
+            // lib:commons-lang3-3.12.0.jar
+            String n = dep.substring(4);
+            if (n.endsWith(".jar")) {
+                n = n.substring(0, n.length() - 4);
+            }
+            String v = "1.0";
+            String a = n;
+            int pos = n.lastIndexOf("-");
+            if (pos != -1) {
+                a = n.substring(0, pos);
+                v = n.substring(pos + 1);
+            }
+            gav = new MavenGav();
+            gav.setGroupId("custom");
+            gav.setArtifactId(a);
+            gav.setVersion(v);
+            gav.setPackaging("lib");
+        } else {
+            gav = MavenGav.parseGav(dep);
+        }
+        return gav;
+    }
+
+    protected void copyLocalLibDependencies(Set<String> deps) throws Exception {
+        for (String d : deps) {
+            if (d.startsWith("lib:")) {
+                File libDir = new File(BUILD_DIR, "lib");
+                libDir.mkdirs();
+                String n = d.substring(4);
+                File source = new File(n);
+                File target = new File(libDir, n);
+                safeCopy(source, target, true);
+            }
+        }
+    }
 }
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 f591455c3fa..f25284eb43a 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
@@ -109,6 +109,8 @@ class ExportCamelMain extends Export {
         createMainClassSource(srcJavaDir, packageName, mainClassname);
         // gather dependencies
         Set<String> deps = resolveDependencies(settings, profile);
+        // copy local lib JARs
+        copyLocalLibDependencies(deps);
         if ("maven".equals(buildTool)) {
             createMavenPom(settings, new File(BUILD_DIR, "pom.xml"), deps, packageName);
             if (mavenWrapper) {
@@ -157,7 +159,7 @@ class ExportCamelMain extends Export {
 
         List<MavenGav> gavs = new ArrayList<>();
         for (String dep : deps) {
-            MavenGav gav = MavenGav.parseGav(dep);
+            MavenGav gav = parseMavenGav(dep);
             String gid = gav.getGroupId();
             if ("org.apache.camel".equals(gid)) {
                 // uses BOM so version should not be included
@@ -177,8 +179,14 @@ class ExportCamelMain extends Export {
             if (gav.getVersion() != null) {
                 sb.append("            <version>").append(gav.getVersion()).append("</version>\n");
             }
-            // special for camel-kamelets-utils
+            // special for lib JARs
+            if ("lib".equals(gav.getPackaging())) {
+                sb.append("            <scope>system</scope>\n");
+                sb.append("            <systemPath>\\$\\{project.basedir}/lib/").append(gav.getArtifactId()).append("-")
+                        .append(gav.getVersion()).append(".jar</systemPath>\n");
+            }
             if ("camel-kamelets-utils".equals(gav.getArtifactId())) {
+                // special for camel-kamelets-utils
                 sb.append("            <exclusions>\n");
                 sb.append("                <exclusion>\n");
                 sb.append("                    <groupId>org.apache.camel</groupId>\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 5f29ed7d66a..716bda60762 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
@@ -111,6 +111,8 @@ class ExportQuarkus extends Export {
         copyDockerFiles();
         // gather dependencies
         Set<String> deps = resolveDependencies(settings, profile);
+        // copy local lib JARs
+        copyLocalLibDependencies(deps);
         if ("maven".equals(buildTool)) {
             createMavenPom(settings, new File(BUILD_DIR, "pom.xml"), deps);
             if (mavenWrapper) {
@@ -363,7 +365,7 @@ class ExportQuarkus extends Export {
 
         List<MavenGav> gavs = new ArrayList<>();
         for (String dep : deps) {
-            MavenGav gav = MavenGav.parseGav(dep);
+            MavenGav gav = parseMavenGav(dep);
             String gid = gav.getGroupId();
             String aid = gav.getArtifactId();
             // transform to camel-quarkus extension GAV
@@ -399,6 +401,12 @@ class ExportQuarkus extends Export {
             if (gav.getVersion() != null) {
                 sb.append("            <version>").append(gav.getVersion()).append("</version>\n");
             }
+            // special for lib JARs
+            if ("lib".equals(gav.getPackaging())) {
+                sb.append("            <scope>system</scope>\n");
+                sb.append("            <systemPath>\\$\\{project.basedir}/lib/").append(gav.getArtifactId()).append("-")
+                        .append(gav.getVersion()).append(".jar</systemPath>\n");
+            }
             // special for camel-kamelets-utils
             if ("camel-kamelets-utils".equals(gav.getArtifactId())) {
                 sb.append("            <exclusions>\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 5317b10b9a3..2a9c3bf2d11 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
@@ -112,6 +112,8 @@ class ExportSpringBoot extends Export {
         createMainClassSource(srcJavaDir, packageName, mainClassname);
         // gather dependencies
         Set<String> deps = resolveDependencies(settings, profile);
+        // copy local lib JARs
+        copyLocalLibDependencies(deps);
         if ("maven".equals(buildTool)) {
             createMavenPom(settings, profile, new File(BUILD_DIR, "pom.xml"), deps);
             if (mavenWrapper) {
@@ -207,7 +209,7 @@ class ExportSpringBoot extends Export {
 
         List<MavenGav> gavs = new ArrayList<>();
         for (String dep : deps) {
-            MavenGav gav = MavenGav.parseGav(dep);
+            MavenGav gav = parseMavenGav(dep);
             String gid = gav.getGroupId();
             String aid = gav.getArtifactId();
             String v = gav.getVersion();
@@ -239,6 +241,12 @@ class ExportSpringBoot extends Export {
             if (gav.getVersion() != null) {
                 sb.append("            <version>").append(gav.getVersion()).append("</version>\n");
             }
+            // special for lib JARs
+            if ("lib".equals(gav.getPackaging())) {
+                sb.append("            <scope>system</scope>\n");
+                sb.append("            <systemPath>\\$\\{project.basedir}/lib/").append(gav.getArtifactId()).append("-")
+                        .append(gav.getVersion()).append(".jar</systemPath>\n");
+            }
             // special for camel-kamelets-utils
             if ("camel-kamelets-utils".equals(gav.getArtifactId())) {
                 sb.append("            <exclusions>\n");