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");