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) {