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 82e3101  CAMEL-16671: camel-maven-plugin - Detect if kamelet-main is 
on classpath and use KameletMain as main class
82e3101 is described below

commit 82e3101aec8441a3c8f12567844be5a0c38c0b80
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Mon May 31 10:03:45 2021 +0200

    CAMEL-16671: camel-maven-plugin - Detect if kamelet-main is on classpath 
and use KameletMain as main class
---
 .../main/java/org/apache/camel/maven/RunMojo.java  | 44 ++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git 
a/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RunMojo.java
 
b/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RunMojo.java
index 608e23c..0456925 100644
--- 
a/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RunMojo.java
+++ 
b/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RunMojo.java
@@ -125,6 +125,12 @@ public class RunMojo extends AbstractExecMojo {
     @Parameter(property = "camel.useCDI")
     protected Boolean useCDI;
 
+    /**
+     * Whether to use Kamelet (camel-main-kamelet) when running, instead of 
Spring
+     */
+    @Parameter(property = "camel.useKamelet")
+    protected Boolean useKamelet;
+
     protected String extendedPluginDependencyArtifactId;
 
     @Component
@@ -327,6 +333,14 @@ public class RunMojo extends AbstractExecMojo {
             // auto detect if we have blueprint
             usingBlueprintMain = 
detectBlueprintOnClassPathOrBlueprintXMLFiles();
         }
+        boolean usingKameletMain;
+        if (useKamelet != null) {
+            // use configured value
+            usingKameletMain = useKamelet;
+        } else {
+            // auto detect if we have blueprint
+            usingKameletMain = detectKameletOnClassPath();
+        }
 
         // lets create the command line arguments to pass in...
         List<String> args = new ArrayList<>();
@@ -394,6 +408,11 @@ public class RunMojo extends AbstractExecMojo {
                 args.add(configAdminFileName);
             }
             getLog().info("Using org.apache.camel.blueprint.Main to initiate a 
CamelContext");
+        } else if (usingKameletMain) {
+            mainClass = "org.apache.camel.main.KameletMain";
+            // must include plugin dependencies for kamelet
+            extraPluginDependencyArtifactId = "camel-kamelet-main";
+            getLog().info("Using " + mainClass + " to initiate a 
CamelContext");
         } else if (mainClass != null) {
             getLog().info("Using custom " + mainClass + " to initiate a 
CamelContext");
         } else {
@@ -668,6 +687,7 @@ public class RunMojo extends AbstractExecMojo {
         for (Dependency dep : deps) {
             if ("org.apache.camel".equals(dep.getGroupId()) && 
"camel-blueprint".equals(dep.getArtifactId())) {
                 getLog().info("camel-blueprint detected on classpath");
+                return true;
             }
         }
 
@@ -686,6 +706,30 @@ public class RunMojo extends AbstractExecMojo {
     }
 
     @SuppressWarnings("unchecked")
+    private boolean detectKameletOnClassPath() {
+        List<Dependency> deps = project.getCompileDependencies();
+        for (Dependency dep : deps) {
+            if ("org.apache.camel".equals(dep.getGroupId()) && 
"camel-kamelet-main".equals(dep.getArtifactId())) {
+                getLog().info("camel-kamelet-main detected on classpath");
+                return true;
+            }
+        }
+
+        // maybe there are Kamelet YAML files
+        List<Resource> resources = project.getResources();
+        for (Resource res : resources) {
+            File dir = new File(res.getDirectory());
+            File kamelets = new File(dir, "kamelets");
+            if (kamelets.exists() && kamelets.isDirectory()) {
+                getLog().info("Kamelets YAML files detected in directory " + 
kamelets);
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    @SuppressWarnings("unchecked")
     private boolean detectBlueprintMainOnClassPath() {
         List<Dependency> deps = project.getCompileDependencies();
         for (Dependency dep : deps) {

Reply via email to