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

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


The following commit(s) were added to refs/heads/camel-4.22.x by this push:
     new 4daac3d60b56 [backport camel-4.22.x] CAMEL-25452: camel-jbang: hand 
--resource-dir on to the runtime-specific export (#27573)
4daac3d60b56 is described below

commit 4daac3d60b569bd34bb220cf79b75235e1242abc
Author: Guillaume Nodet <[email protected]>
AuthorDate: Thu Oct 8 18:55:43 2026 +0200

    [backport camel-4.22.x] CAMEL-25452: camel-jbang: hand --resource-dir on to 
the runtime-specific export (#27573)
---
 .../camel/dsl/jbang/core/commands/Export.java      |  1 +
 .../camel/dsl/jbang/core/commands/ExportTest.java  | 28 ++++++++++++++++++++++
 2 files changed, 29 insertions(+)

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 32ed859614af..5d6538b65f36 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
@@ -269,6 +269,7 @@ public class Export extends ExportBaseCommand {
         cmd.openapi = this.openapi;
         cmd.packageName = this.packageName;
         cmd.excludes = this.excludes;
+        cmd.resourceDirs = this.resourceDirs;
         cmd.ignoreLoadingError = this.ignoreLoadingError;
         cmd.lazyBean = this.lazyBean;
         cmd.verbose = this.verbose;
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java
 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java
index 251459811254..6ddbfd25ae4c 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java
@@ -21,6 +21,7 @@ import java.io.FileInputStream;
 import java.io.FileReader;
 import java.io.IOException;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -104,6 +105,33 @@ class ExportTest {
         
Assertions.assertNotNull(model.getProperties().getProperty("project.build.outputTimestamp"));
     }
 
+    @ParameterizedTest
+    @MethodSource("runtimeProvider")
+    public void shouldExportResourceDirs(RuntimeType rt) throws Exception {
+        LOG.info("shouldExportResourceDirs {}", rt);
+        // --resource-dir only accepts relative paths
+        Path resources = 
Files.createTempDirectory("camel-export-resource-dirs");
+        try {
+            Path schemas = resources.resolve("schemas");
+            Files.createDirectories(schemas.resolve("common"));
+            Files.writeString(schemas.resolve("api.yaml"), "openapi: 3.0.3");
+            Files.writeString(schemas.resolve("common/types.json"), "{}");
+            String relative = 
Path.of("").toAbsolutePath().relativize(schemas).toString();
+
+            Export command = createCommand(rt, new String[] { 
"classpath:route.yaml" },
+                    "--gav=examples:route:1.0.0", "--dir=" + workingDir, 
"--quiet", "--resource-dir=" + relative);
+            int exit = command.doCall();
+
+            assertThat(exit).isZero();
+            // the last path component is the target directory, the structure 
below it is preserved
+            Path exported = 
workingDir.toPath().resolve("src/main/resources/schemas");
+            assertThat(exported.resolve("api.yaml")).hasContent("openapi: 
3.0.3");
+            assertThat(exported.resolve("common/types.json")).hasContent("{}");
+        } finally {
+            FileUtil.removeDir(resources.toFile());
+        }
+    }
+
     @ParameterizedTest
     @MethodSource("runtimeProvider")
     void shouldExportRouteConfigurationWithStringRedeliveryDelay(RuntimeType 
rt) throws Exception {

Reply via email to