This is an automated email from the ASF dual-hosted git repository. cdeppisch 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 f767828900c [CAMEL-21016] camel-jbang: Add support for multiple build properties f767828900c is described below commit f767828900c2a54c5707867f784dab9d16ca09c0 Author: Thomas Diesler <tdies...@redhat.com> AuthorDate: Thu Jul 25 16:04:04 2024 +0200 [CAMEL-21016] camel-jbang: Add support for multiple build properties --- .../camel/dsl/jbang/core/commands/Export.java | 4 +- .../dsl/jbang/core/commands/ExportBaseCommand.java | 48 +++++++++++++--------- .../dsl/jbang/core/commands/ExportCamelMain.java | 18 +------- .../dsl/jbang/core/commands/ExportQuarkus.java | 16 +------- .../dsl/jbang/core/commands/ExportSpringBoot.java | 19 +-------- .../apache/camel/dsl/jbang/core/commands/Run.java | 18 +++----- .../camel/dsl/jbang/core/common/RuntimeUtil.java | 3 +- .../resources/templates/main-kubernetes-pom.tmpl | 2 +- .../src/main/resources/templates/main-pom.tmpl | 2 +- .../src/main/resources/templates/quarkus-pom.tmpl | 2 +- .../templates/spring-boot-kubernetes-pom.tmpl | 2 +- .../main/resources/templates/spring-boot-pom.tmpl | 2 +- .../core/commands/kubernetes/KubernetesExport.java | 47 ++++++--------------- 13 files changed, 60 insertions(+), 123 deletions(-) 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 89efb841b1e..19f2d48d6b5 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 @@ -113,7 +113,7 @@ public class Export extends ExportBaseCommand { // copy properties from this to cmd cmd.files = this.files; cmd.repos = this.repos; - cmd.addDependencies(this.dependencies); + cmd.dependencies = this.dependencies; cmd.runtime = this.runtime; cmd.gav = this.gav; cmd.mavenSettings = this.mavenSettings; @@ -140,7 +140,7 @@ public class Export extends ExportBaseCommand { cmd.gradleWrapper = this.gradleWrapper; cmd.buildTool = this.buildTool; cmd.quiet = this.quiet; - cmd.additionalProperties = this.additionalProperties; + cmd.buildProperties = this.buildProperties; cmd.openapi = this.openapi; cmd.packageName = this.packageName; cmd.exclude = this.exclude; 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 51977cc4886..dbf8d95dc40 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 @@ -94,7 +94,7 @@ public abstract class ExportBaseCommand extends CamelCommand { protected String repos; @CommandLine.Option(names = { "--dep", "--dependency" }, arity = "*", description = "Add additional dependencies") - protected String[] dependencies; + protected List<String> dependencies = new ArrayList<>(); @CommandLine.Option(names = { "--runtime" }, completionCandidates = RuntimeCompletionCandidates.class, @@ -204,9 +204,9 @@ public abstract class ExportBaseCommand extends CamelCommand { description = "Whether to allow automatic downloading JAR dependencies (over the internet)") protected boolean download = true; - @CommandLine.Option(names = { "--additional-properties" }, - description = "Additional maven properties, ex. --additional-properties=prop1=foo,prop2=bar") - protected String additionalProperties; + @CommandLine.Option(names = { "--build-property" }, arity = "*", + description = "Maven/Gradle build properties, ex. --build-property=prop1=foo") + protected List<String> buildProperties = new ArrayList<>(); @CommandLine.Option(names = { "--logging" }, defaultValue = "false", description = "Can be used to turn on logging (logs to file in <user home>/.camel directory)") @@ -295,7 +295,7 @@ public abstract class ExportBaseCommand extends CamelCommand { protected Integer runSilently(boolean ignoreLoadingError) throws Exception { Run run = new Run(getMain()); // need to declare the profile to use for run - run.addDependencies(dependencies); + run.dependencies = dependencies; run.files = files; run.exclude = exclude; run.openapi = openapi; @@ -310,14 +310,24 @@ public abstract class ExportBaseCommand extends CamelCommand { protected void addDependencies(String... deps) { var depsArray = Optional.ofNullable(deps).orElse(new String[0]); - var depsList = new ArrayList<>(getDependenciesList()); - depsList.addAll(Arrays.asList(depsArray)); - dependencies = depsList.toArray(new String[0]); - } - - protected List<String> getDependenciesList() { - var depsArray = Optional.ofNullable(dependencies).orElse(new String[0]); - return Arrays.asList(depsArray); + dependencies.addAll(Arrays.asList(depsArray)); + } + + protected String replaceBuildProperties(String context) { + String properties = buildProperties.stream() + .filter(item -> !item.isEmpty()) + .map(item -> { + String[] keyValueProperty = item.split("="); + return String.format(" <%s>%s</%s>", keyValueProperty[0], keyValueProperty[1], + keyValueProperty[0]); + }) + .collect(Collectors.joining(System.lineSeparator())); + if (!properties.isEmpty()) { + context = context.replaceFirst(Pattern.quote("{{ .BuildProperties }}"), Matcher.quoteReplacement(properties)); + } else { + context = context.replaceFirst(Pattern.quote("{{ .BuildProperties }}"), ""); + } + return context; } protected Set<String> resolveDependencies(File settings, File profile) throws Exception { @@ -338,7 +348,7 @@ public abstract class ExportBaseCommand extends CamelCommand { } // custom dependencies - for (String d : getDependenciesList()) { + for (String d : dependencies) { answer.add(normalizeDependency(d)); } @@ -619,12 +629,10 @@ public abstract class ExportBaseCommand extends CamelCommand { // noop } - protected Properties mapToProperties(Map<String, Object> map) { - var result = new Properties(); - if (map != null) { - map.forEach((key, value) -> result.setProperty(key, value.toString())); - } - return result; + protected Properties mapBuildProperties() { + var answer = new Properties(); + buildProperties.stream().map(item -> item.split("=")).forEach(toks -> answer.setProperty(toks[0], toks[1])); + return answer; } protected void copyMavenWrapper() throws Exception { 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 b3652ba384e..c662979ef1e 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 @@ -20,13 +20,9 @@ import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Properties; import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; import org.apache.camel.catalog.CamelCatalog; import org.apache.camel.catalog.DefaultCamelCatalog; @@ -185,19 +181,7 @@ class ExportCamelMain extends Export { RuntimeUtil.loadProperties(prop, settings); String repos = getMavenRepos(settings, prop, camelVersion); - if (additionalProperties != null) { - String properties = Arrays.stream(additionalProperties.split(",")) - .filter(item -> !item.isEmpty()) - .map(item -> { - String[] keyValueProperty = item.split("="); - return String.format(" <%s>%s</%s>", keyValueProperty[0], keyValueProperty[1], - keyValueProperty[0]); - }) - .collect(Collectors.joining(System.lineSeparator())); - context = context.replaceFirst(Pattern.quote("{{ .AdditionalProperties }}"), Matcher.quoteReplacement(properties)); - } else { - context = context.replaceFirst(Pattern.quote("{{ .AdditionalProperties }}"), ""); - } + context = replaceBuildProperties(context); if (repos == null || repos.isEmpty()) { context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", ""); 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 42d73db4e49..6e2cdf57b5b 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 @@ -26,8 +26,6 @@ import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.StringJoiner; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import java.util.stream.Collectors; import org.apache.camel.catalog.CamelCatalog; @@ -375,19 +373,7 @@ class ExportQuarkus extends Export { context = context.replaceFirst("\\{\\{ \\.JavaVersion }}", javaVersion); context = context.replaceFirst("\\{\\{ \\.CamelVersion }}", camelVersion); - if (additionalProperties != null && !additionalProperties.isEmpty()) { - String properties = Arrays.stream(additionalProperties.split(",")) - .filter(item -> !item.isEmpty()) - .map(item -> { - String[] keyValueProperty = item.split("="); - return String.format(" <%s>%s</%s>", keyValueProperty[0], keyValueProperty[1], - keyValueProperty[0]); - }) - .collect(Collectors.joining(System.lineSeparator())); - context = context.replaceFirst(Pattern.quote("{{ .AdditionalProperties }}"), Matcher.quoteReplacement(properties)); - } else { - context = context.replaceFirst(Pattern.quote("{{ .AdditionalProperties }}"), ""); - } + context = replaceBuildProperties(context); if (repos == null || repos.isEmpty()) { context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", ""); 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 07b2eac1a7f..4c1b006cc88 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 @@ -22,13 +22,9 @@ import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Properties; import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; import org.apache.camel.catalog.CamelCatalog; import org.apache.camel.dsl.jbang.core.common.CatalogLoader; @@ -186,19 +182,8 @@ class ExportSpringBoot extends Export { } else { context = context.replaceAll("\\{\\{ \\.CamelSpringBootVersion }}", camelVersion); } - if (additionalProperties != null && !additionalProperties.isEmpty()) { - String properties = Arrays.stream(additionalProperties.split(",")) - .filter(item -> !item.isEmpty()) - .map(item -> { - String[] keyValueProperty = item.split("="); - return String.format(" <%s>%s</%s>", keyValueProperty[0], keyValueProperty[1], - keyValueProperty[0]); - }) - .collect(Collectors.joining(System.lineSeparator())); - context = context.replaceFirst(Pattern.quote("{{ .AdditionalProperties }}"), Matcher.quoteReplacement(properties)); - } else { - context = context.replaceFirst(Pattern.quote("{{ .AdditionalProperties }}"), ""); - } + + context = replaceBuildProperties(context); if (repos == null || repos.isEmpty()) { context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", ""); diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java index 570892479e4..36e9c6d0adf 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java @@ -153,7 +153,7 @@ public class Run extends CamelCommand { String profile = "dev"; @Option(names = { "--dep", "--dependency" }, arity = "*", description = "Add additional dependencies") - String[] dependencies; + List<String> dependencies = new ArrayList<>(); @Option(names = { "--repos" }, description = "Additional maven repositories for download on-demand (Use commas to separate multiple repositories)") @@ -808,7 +808,7 @@ public class Run extends CamelCommand { // merge existing dependencies with --deps addDependencies(RuntimeUtil.getDependenciesAsArray(profileProperties)); - if (dependencies.length > 0) { + if (!dependencies.isEmpty()) { var joined = String.join(",", dependencies); main.addInitialProperty("camel.jbang.dependencies", joined); writeSettings("camel.jbang.dependencies", joined); @@ -857,14 +857,8 @@ public class Run extends CamelCommand { protected void addDependencies(String... deps) { var depsArray = Optional.ofNullable(deps).orElse(new String[0]); - var depsList = new ArrayList<>(getDependenciesList()); - depsList.addAll(Arrays.asList(depsArray)); - dependencies = depsList.toArray(new String[0]); - } - - protected List<String> getDependenciesList() { - var depsArray = Optional.ofNullable(dependencies).orElse(new String[0]); - return Arrays.asList(depsArray); + var depsList = Arrays.stream(depsArray).filter(tok -> !tok.isEmpty()).toList(); + dependencies.addAll(depsList); } protected int runQuarkus() throws Exception { @@ -890,7 +884,7 @@ public class Run extends CamelCommand { if (eq.gav == null) { eq.gav = "org.example.project:jbang-run-dummy:1.0-SNAPSHOT"; } - eq.addDependencies(this.dependencies); + eq.dependencies = this.dependencies; eq.addDependencies("camel:cli-connector"); eq.fresh = this.fresh; eq.download = this.download; @@ -954,7 +948,7 @@ public class Run extends CamelCommand { if (eq.gav == null) { eq.gav = "org.example.project:jbang-run-dummy:1.0-SNAPSHOT"; } - eq.addDependencies(dependencies); + eq.dependencies.addAll(dependencies); eq.addDependencies("camel:cli-connector"); if (this.dev) { // hot-reload of spring-boot diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/RuntimeUtil.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/RuntimeUtil.java index da04fb58059..739f8166263 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/RuntimeUtil.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/RuntimeUtil.java @@ -184,7 +184,8 @@ public final class RuntimeUtil { } public static String[] getDependenciesAsArray(Properties properties) { - return getDependencies(properties).split(","); + String deps = getDependencies(properties); + return deps.isEmpty() ? new String[0] : deps.split(","); } public static String getPid() { diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-kubernetes-pom.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-kubernetes-pom.tmpl index ab7a3647f50..4d0e44bc1ed 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-kubernetes-pom.tmpl +++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-kubernetes-pom.tmpl @@ -9,7 +9,7 @@ <properties> <java.version>{{ .JavaVersion }}</java.version> -{{ .AdditionalProperties }} +{{ .BuildProperties }} </properties> <dependencyManagement> diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-pom.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-pom.tmpl index 1d837b06d60..08f5eebc89c 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-pom.tmpl +++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-pom.tmpl @@ -9,7 +9,7 @@ <properties> <java.version>{{ .JavaVersion }}</java.version> -{{ .AdditionalProperties }} +{{ .BuildProperties }} </properties> <dependencyManagement> diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/quarkus-pom.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/quarkus-pom.tmpl index 83927859b0d..cd3a7c49082 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/quarkus-pom.tmpl +++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/quarkus-pom.tmpl @@ -17,7 +17,7 @@ <quarkus.platform.group-id>{{ .QuarkusGroupId }}</quarkus.platform.group-id> <quarkus.platform.artifact-id>{{ .QuarkusArtifactId }}</quarkus.platform.artifact-id> <quarkus.platform.version>{{ .QuarkusVersion }}</quarkus.platform.version> -{{ .AdditionalProperties }} +{{ .BuildProperties }} <skipITs>true</skipITs> <surefire-plugin.version>3.1.2</surefire-plugin.version> </properties> diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-kubernetes-pom.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-kubernetes-pom.tmpl index 894051b0701..916f0de418e 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-kubernetes-pom.tmpl +++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-kubernetes-pom.tmpl @@ -16,7 +16,7 @@ <properties> <java.version>{{ .JavaVersion }}</java.version> -{{ .AdditionalProperties }} +{{ .BuildProperties }} </properties> <dependencyManagement> diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl index c079cb37c1a..a212213ac6b 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl +++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl @@ -16,7 +16,7 @@ <properties> <java.version>{{ .JavaVersion }}</java.version> -{{ .AdditionalProperties }} +{{ .BuildProperties }} </properties> <dependencyManagement> diff --git a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExport.java b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExport.java index 57b89707985..320ffa67bf3 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExport.java +++ b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExport.java @@ -24,11 +24,8 @@ import java.nio.file.Files; import java.nio.file.StandardOpenOption; import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; import java.util.Optional; -import java.util.Properties; import java.util.stream.Collectors; import org.apache.camel.catalog.CamelCatalog; @@ -151,17 +148,6 @@ public class KubernetesExport extends Export { printer().printf("--build-tool=%s is not yet supported%n", buildTool); } - // Init export properties - Map<String, Object> exportProps = new LinkedHashMap<>(); - if (additionalProperties != null) { - Arrays.stream(additionalProperties.split(",")) - .filter(item -> !item.isEmpty()) - .forEach(item -> { - String[] keyValue = item.split("="); - exportProps.put(keyValue[0], keyValue[1]); - }); - } - String propPrefix; if (runtime == RuntimeType.springBoot) { propPrefix = "camel.springboot"; @@ -186,13 +172,13 @@ public class KubernetesExport extends Export { String resolvedImageRegistry = resolveImageRegistry(); if (resolvedImageGroup != null) { - exportProps.put("%s.container-image.group".formatted(propPrefix), resolvedImageGroup); + buildProperties.add("%s.container-image.group=%s".formatted(propPrefix, resolvedImageGroup)); } if (resolvedImageRegistry != null) { var allowInsecure = resolvedImageRegistry.startsWith("localhost"); - exportProps.put("%s.container-image.registry".formatted(propPrefix), resolvedImageRegistry); - exportProps.put("%s.container-image.insecure".formatted(propPrefix), "%b".formatted(allowInsecure)); + buildProperties.add("%s.container-image.registry=%s".formatted(propPrefix, resolvedImageRegistry)); + buildProperties.add("%s.container-image.insecure=%b".formatted(propPrefix, allowInsecure)); } String projectName = getProjectName(); @@ -250,14 +236,14 @@ public class KubernetesExport extends Export { Container container = traitsSpec.getContainer(); - exportProps.put("%s.kubernetes.image-name".formatted(propPrefix), container.getImage()); - exportProps.put("%s.kubernetes.ports.%s.container-port".formatted(propPrefix, - Optional.ofNullable(container.getPortName()).orElse(ContainerTrait.DEFAULT_CONTAINER_PORT_NAME)), - Optional.ofNullable(container.getPort()).orElse(ContainerTrait.DEFAULT_CONTAINER_PORT)); + buildProperties.add("%s.kubernetes.image-name=%s".formatted(propPrefix, container.getImage())); + buildProperties.add("%s.kubernetes.ports.%s.container-port=%d".formatted(propPrefix, + Optional.ofNullable(container.getPortName()).orElse(ContainerTrait.DEFAULT_CONTAINER_PORT_NAME), + Optional.ofNullable(container.getPort()).orElse(ContainerTrait.DEFAULT_CONTAINER_PORT))); // Need to set quarkus.container properties, otherwise these settings get overwritten by Quarkus if (container.getName() != null && !container.getName().equals(projectName)) { - exportProps.put("%s.kubernetes.container-name".formatted(propPrefix), container.getName()); + buildProperties.add("%s.kubernetes.container-name=%s".formatted(propPrefix, container.getName())); } if (container.getImagePullPolicy() != null) { @@ -265,7 +251,7 @@ public class KubernetesExport extends Export { if (runtime == RuntimeType.quarkus) { imagePullPolicy = StringHelper.camelCaseToDash(imagePullPolicy); } - exportProps.put("%s.kubernetes.image-pull-policy".formatted(propPrefix), imagePullPolicy); + buildProperties.add("%s.kubernetes.image-pull-policy=%s".formatted(propPrefix, imagePullPolicy)); } // Quarkus Runtime specific @@ -279,28 +265,21 @@ public class KubernetesExport extends Export { addDependencies("io.fabric8:kubernetes-client:6.13.1"); // Mutually exclusive image build plugins - use Jib by default - if (!getDependenciesList().contains("io.quarkus:quarkus-container-image-docker")) { + if (!dependencies.contains("io.quarkus:quarkus-container-image-docker")) { addDependencies("io.quarkus:quarkus-container-image-jib"); } // Quarkus specific properties - exportProps.put("quarkus.container-image.build", "true"); + buildProperties.add("quarkus.container-image.build=true"); } // SpringBoot Runtime specific if (runtime == RuntimeType.springBoot || runtime == RuntimeType.main) { - Properties props = mapToProperties(exportProps); File settings = new File(CommandLineHelper.getWorkDir(), Run.RUN_SETTINGS_FILE); - - var jkubeVersion = jkubeMavenPluginVersion(settings, props); - exportProps.put("%s.jkube.version".formatted(propPrefix), jkubeVersion); + var jkubeVersion = jkubeMavenPluginVersion(settings, mapBuildProperties()); + buildProperties.add("%s.jkube.version=%s".formatted(propPrefix, jkubeVersion)); } - // Setup additional properties - additionalProperties = exportProps.entrySet().stream() - .map(entry -> "%s=%s".formatted(entry.getKey(), entry.getValue())) - .collect(Collectors.joining(",")); - // Run export int exit = super.export(); if (exit != 0) {