From 48a98b6b6953edddc39a3e36fcd7c91d32b5247d Mon Sep 17 00:00:00 2001 From: Andrej Vano Date: Tue, 19 Sep 2023 14:34:39 +0200 Subject: [PATCH] [Quarkus] Pass "quarkus." properties to maven builds --- .../cq/application/OpenshiftQuarkusApp.java | 3 +- .../product/cq/application/QuarkusApp.java | 32 ++++++++++++------- .../configuration/QuarkusConfiguration.java | 23 +++++++++++++ 3 files changed, 45 insertions(+), 13 deletions(-) diff --git a/fuse-products/src/main/java/software/tnb/product/cq/application/OpenshiftQuarkusApp.java b/fuse-products/src/main/java/software/tnb/product/cq/application/OpenshiftQuarkusApp.java index 6108e56c0..b87368f85 100644 --- a/fuse-products/src/main/java/software/tnb/product/cq/application/OpenshiftQuarkusApp.java +++ b/fuse-products/src/main/java/software/tnb/product/cq/application/OpenshiftQuarkusApp.java @@ -117,6 +117,7 @@ private Map getProperties() { if (!QuarkusConfiguration.isQuarkusNative()) { properties.put("quarkus.openshift.command", getJavaCommand()); } + properties.putAll(QuarkusConfiguration.fromSystemProperties()); return properties; } @@ -181,7 +182,7 @@ private boolean deployPodFailed() { private boolean integrationPodFailed() { final List pods = OpenshiftClient.get().getLabeledPods("app.kubernetes.io/name", name); - if (pods.size() == 0) { + if (pods.isEmpty()) { return false; } else { return OpenshiftClient.get().isPodFailed(OpenshiftClient.get().getLabeledPods("app.kubernetes.io/name", name).get(0)); diff --git a/fuse-products/src/main/java/software/tnb/product/cq/application/QuarkusApp.java b/fuse-products/src/main/java/software/tnb/product/cq/application/QuarkusApp.java index 49d3aac62..fa3f8e983 100644 --- a/fuse-products/src/main/java/software/tnb/product/cq/application/QuarkusApp.java +++ b/fuse-products/src/main/java/software/tnb/product/cq/application/QuarkusApp.java @@ -17,6 +17,7 @@ import org.slf4j.LoggerFactory; import java.io.File; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -31,17 +32,21 @@ public QuarkusApp(AbstractIntegrationBuilder integrationBuilder) { String quarkusMavenPluginCreate = String.format("%s:%s:%s:create", QuarkusConfiguration.quarkusPlatformGroupId(), "quarkus-maven-plugin", QuarkusConfiguration.quarkusPlatformVersion()); + Map properties = new HashMap<>(Map.of( + "projectGroupId", TestConfiguration.appGroupId(), + "projectArtifactId", name, + "platformGroupId", QuarkusConfiguration.quarkusPlatformGroupId(), + "platformArtifactId", QuarkusConfiguration.quarkusPlatformArtifactId(), + "platformVersion", QuarkusConfiguration.quarkusPlatformVersion(), + "extensions", OpenshiftConfiguration.isOpenshift() ? "openshift" : "" + )); + + properties.putAll(QuarkusConfiguration.fromSystemProperties()); + Maven.invoke(new BuildRequest.Builder() .withBaseDirectory(TestConfiguration.appLocation()) .withGoals(quarkusMavenPluginCreate) - .withProperties(Map.of( - "projectGroupId", TestConfiguration.appGroupId(), - "projectArtifactId", name, - "platformGroupId", QuarkusConfiguration.quarkusPlatformGroupId(), - "platformArtifactId", QuarkusConfiguration.quarkusPlatformArtifactId(), - "platformVersion", QuarkusConfiguration.quarkusPlatformVersion(), - "extensions", OpenshiftConfiguration.isOpenshift() ? "openshift" : "" - )) + .withProperties(properties) .withLogFile(getLogPath(Phase.GENERATE)) .withLogMarker(LogStream.marker(name, Phase.GENERATE)) .build() @@ -52,13 +57,16 @@ public QuarkusApp(AbstractIntegrationBuilder integrationBuilder) { customizeProject(integrationBuilder.getDependencies()); customizePlugins(integrationBuilder.getPlugins()); + properties = new HashMap<>(Map.of( + "skipTests", "true", + "quarkus.native.container-build", "true" + )); + properties.putAll(QuarkusConfiguration.fromSystemProperties()); + BuildRequest.Builder requestBuilder = new BuildRequest.Builder() .withBaseDirectory(TestConfiguration.appLocation().resolve(name)) .withGoals("clean", "package") - .withProperties(Map.of( - "skipTests", "true", - "quarkus.native.container-build", "true" - )) + .withProperties(properties) .withLogFile(getLogPath(Phase.BUILD)) .withLogMarker(LogStream.marker(name, Phase.BUILD)); if (QuarkusConfiguration.isQuarkusNative() && !OpenshiftConfiguration.isOpenshift()) { diff --git a/fuse-products/src/main/java/software/tnb/product/cq/configuration/QuarkusConfiguration.java b/fuse-products/src/main/java/software/tnb/product/cq/configuration/QuarkusConfiguration.java index 8dc2acf97..097799261 100644 --- a/fuse-products/src/main/java/software/tnb/product/cq/configuration/QuarkusConfiguration.java +++ b/fuse-products/src/main/java/software/tnb/product/cq/configuration/QuarkusConfiguration.java @@ -2,7 +2,17 @@ import software.tnb.product.camel.CamelConfiguration; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + public class QuarkusConfiguration extends CamelConfiguration { + // All properties starting with "quarkus." are propagated to the maven builds (to allow customizing quarkus build "globally") + // To include only properties passed as system properties, this list contains properties that are defined in this class + // and are filtered out and not passed to the maven build (or are passed as different properties) + // if you're adding a new property and it starts with "quarkus.", consider adding it to this set + private static final Set ignoredQuarkusProperties = + Set.of("quarkus.version", "quarkus.native", "quarkus.platform.group-id", "quarkus.platform.artifact-id", "quarkus.platform.version"); public static final String CAMEL_QUARKUS_VERSION = "camel-quarkus.version"; public static final String DEFAULT_CAMEL_QUARKUS_VERSION = "2.13.3"; @@ -65,4 +75,17 @@ public static String camelQuarkusPlatformVersion() { return getProperty(CAMEL_QUARKUS_PLATFORM_VERSION); } + /** + * Collect all "quarkus." properties defined as system properties and filter out properties from QuarkusConfiguration class. + * + * @return map of quarkus properties + */ + public static Map fromSystemProperties() { + return System.getProperties() + .entrySet() + .stream() + .filter(e -> e.getKey().toString().startsWith("quarkus.")) + .filter(e -> !ignoredQuarkusProperties.contains(e.getKey().toString())) + .collect(Collectors.toMap(e -> e.getKey().toString(), e -> e.getValue().toString())); + } }