From 7cebc453811c3b6518efed53ffc4d0b6aaafcd44 Mon Sep 17 00:00:00 2001 From: Mike Friesen - FormKiQ Date: Sat, 16 Jul 2022 09:57:07 -0500 Subject: [PATCH 1/2] Added SerializationConfigurationResources support --- build.gradle | 2 +- .../gradle/GraalvmNativeExtension.java | 123 ++++++++++-------- .../gradle/internal/NativeImageExecutor.java | 5 + 3 files changed, 78 insertions(+), 52 deletions(-) diff --git a/build.gradle b/build.gradle index 84a0612..171a5da 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ plugins { } group 'com.formkiq.gradle' -version '1.2.1' +version '1.3.0' sourceCompatibility = "11" targetCompatibility = "11" diff --git a/src/main/java/com/formkiq/gradle/GraalvmNativeExtension.java b/src/main/java/com/formkiq/gradle/GraalvmNativeExtension.java index ec173b7..b772399 100644 --- a/src/main/java/com/formkiq/gradle/GraalvmNativeExtension.java +++ b/src/main/java/com/formkiq/gradle/GraalvmNativeExtension.java @@ -26,64 +26,66 @@ public class GraalvmNativeExtension { /** Java Default Version. */ private static final String DEFAULT_JAVA_VERSION = "java11"; - /** Java Version. */ - private Property javaVersion; - /** Graalvm Version. */ - private Property imageVersion; - /** Local Image File to Use. */ - private Property imageFile; - /** Class Name with main() method. */ - private Property mainClassName; - /** Reflection Config File. */ - private Property reflectionConfig; - /** Enable http support in the generated image. */ - private Property enableHttp; - /** Enable https support in the generated image. */ - private Property enableHttps; - /** Enable verbose output. */ - private Property enableVerbose; - /** Build stand-alone image if possible. */ - private Property enableAutoFallback; + /** Additional Classpaths comma separated. */ + private Property addClasspath; + /** Allow image building with an incomplete class path. */ + private Property enableAllowIncompleteClasspath; /** Add all security service classes to the generated image. */ private Property enableAllSecurityServices; + /** Build stand-alone image if possible. */ + private Property enableAutoFallback; + /** Check if native-toolchain is known to work with native-image. */ + private Property enableCheckToolchain; + /** Enable using Graalvm Docker Image. */ + private Property enableDocker; /** Force building of fallback image. */ private Property enableForceFallback; - /** List of packages and classes that are initialized during image generation. */ - private ListProperty initializeAtBuildTime; - /** List of packages and classes that are initialized at runtime. */ - private ListProperty initializeAtRunTime; - /** Java System Properties. */ - private ListProperty systemProperty; + /** Enable http support in the generated image. */ + private Property enableHttp; + /** Enable https support in the generated image. */ + private Property enableHttps; /** Provide java.lang.Terminator exit handlers for executable images. */ private Property enableInstallExitHandlers; - /** Build shared library. */ - private Property enableShared; - /** Build statically linked executable. */ - private Property enableStatic; - /** Trace Class Initialization. */ - private Property traceClassInitialization; + /** Build stand-alone image or report failure. */ + private Property enableNoFallback; + /** Print analysis call tree. */ + private Property enablePrintAnalysisCallTree; /** Enable the type flow saturation analysis performance optimization. */ private Property enableRemoveSaturatedTypeFlows; /** Show exception stack traces for exceptions during image building. */ private Property enableReportExceptionStackTraces; - /** Print analysis call tree. */ - private Property enablePrintAnalysisCallTree; - /** Check if native-toolchain is known to work with native-image. */ - private Property enableCheckToolchain; /** Report usage of unsupported methods and fields at run time. */ private Property enableReportUnsupportedElementsAtRuntime; - /** Additional Classpaths comma separated. */ - private Property addClasspath; + /** Build shared library. */ + private Property enableShared; + /** Build statically linked executable. */ + private Property enableStatic; + /** Enable verbose output. */ + private Property enableVerbose; /** a comma-separated list of fully qualified Feature implementation classes. */ private Property features; + /** Local Image File to Use. */ + private Property imageFile; + /** Graalvm Version. */ + private Property imageVersion; + /** List of packages and classes that are initialized during image generation. */ + private ListProperty initializeAtBuildTime; + /** List of packages and classes that are initialized at runtime. */ + private ListProperty initializeAtRunTime; + /** Java Version. */ + private Property javaVersion; + /** Class Name with main() method. */ + private Property mainClassName; /** Output File Name. */ private Property outputFileName; - /** Enable using Graalvm Docker Image. */ - private Property enableDocker; - /** Allow image building with an incomplete class path. */ - private Property enableAllowIncompleteClasspath; - /** Build stand-alone image or report failure. */ - private Property enableNoFallback; + /** Reflection Config File. */ + private Property reflectionConfig; + /** Reflection Config File. */ + private Property serializationConfig; + /** Java System Properties. */ + private ListProperty systemProperty; + /** Trace Class Initialization. */ + private Property traceClassInitialization; /** * constructor. @@ -96,6 +98,7 @@ public GraalvmNativeExtension(final ObjectFactory objects) { this.imageVersion = objects.property(String.class); this.mainClassName = objects.property(String.class); this.reflectionConfig = objects.property(String.class); + this.serializationConfig = objects.property(String.class); this.enableHttp = objects.property(Boolean.class); this.enableHttps = objects.property(Boolean.class); this.enableVerbose = objects.property(Boolean.class); @@ -214,6 +217,15 @@ public String getReflectionConfig() { return this.reflectionConfig.getOrNull(); } + /** + * Get Serialization Config File. + * + * @return {@link String} + */ + public String getSerializationConfig() { + return this.serializationConfig.getOrNull(); + } + /** * Get System Property. * @@ -539,15 +551,6 @@ public void setEnableStatic(Boolean enabled) { this.enableStatic.set(enabled); } - /** - * Set Trace Class Initialization. - * - * @param classInitialization {@link String} - */ - public void setTraceClassInitialization(final String classInitialization) { - this.traceClassInitialization.set(classInitialization); - } - /** * Set Enable Verbose. * @@ -638,6 +641,15 @@ public void setReflectionConfig(final String configFile) { this.reflectionConfig.set(configFile); } + /** + * Set Serialization Config File. + * + * @param configFile {@link String} + */ + public void setSerializationConfig(final String configFile) { + this.serializationConfig.set(configFile); + } + /** * Set System Property. * @@ -646,5 +658,14 @@ public void setReflectionConfig(final String configFile) { public void setSystemProperty(final List list) { this.systemProperty.set(list); } + + /** + * Set Trace Class Initialization. + * + * @param classInitialization {@link String} + */ + public void setTraceClassInitialization(final String classInitialization) { + this.traceClassInitialization.set(classInitialization); + } } diff --git a/src/main/java/com/formkiq/gradle/internal/NativeImageExecutor.java b/src/main/java/com/formkiq/gradle/internal/NativeImageExecutor.java index d4396de..6737958 100644 --- a/src/main/java/com/formkiq/gradle/internal/NativeImageExecutor.java +++ b/src/main/java/com/formkiq/gradle/internal/NativeImageExecutor.java @@ -94,6 +94,11 @@ private List getBuildGraalvmImageArguments(final Project project, final addStringArgument(args, reflectConfig, "-H:ReflectionConfigurationFiles=" + reflectConfig); } + String serializationConfig = this.extension.getSerializationConfig(); + if (serializationConfig != null) { + addStringArgument(args, serializationConfig, "-H:SerializationConfigurationResources=" + serializationConfig); + } + addStringArgument(args, this.extension.getFeatures(), "--features=" + this.extension.getFeatures()); From 4239814be317a21e91c9fe0253c04c986e0f1527 Mon Sep 17 00:00:00 2001 From: Mike Friesen - FormKiQ Date: Sat, 16 Jul 2022 10:55:16 -0500 Subject: [PATCH 2/2] fixed code formatting --- .../java/com/formkiq/gradle/GraalvmNativeExtension.java | 6 +++--- .../com/formkiq/gradle/internal/NativeImageExecutor.java | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/formkiq/gradle/GraalvmNativeExtension.java b/src/main/java/com/formkiq/gradle/GraalvmNativeExtension.java index b772399..e6c7667 100644 --- a/src/main/java/com/formkiq/gradle/GraalvmNativeExtension.java +++ b/src/main/java/com/formkiq/gradle/GraalvmNativeExtension.java @@ -37,7 +37,7 @@ public class GraalvmNativeExtension { /** Check if native-toolchain is known to work with native-image. */ private Property enableCheckToolchain; /** Enable using Graalvm Docker Image. */ - private Property enableDocker; + private Property enableDocker; /** Force building of fallback image. */ private Property enableForceFallback; /** Enable http support in the generated image. */ @@ -225,7 +225,7 @@ public String getReflectionConfig() { public String getSerializationConfig() { return this.serializationConfig.getOrNull(); } - + /** * Get System Property. * @@ -658,7 +658,7 @@ public void setSerializationConfig(final String configFile) { public void setSystemProperty(final List list) { this.systemProperty.set(list); } - + /** * Set Trace Class Initialization. * diff --git a/src/main/java/com/formkiq/gradle/internal/NativeImageExecutor.java b/src/main/java/com/formkiq/gradle/internal/NativeImageExecutor.java index 6737958..9ebfefb 100644 --- a/src/main/java/com/formkiq/gradle/internal/NativeImageExecutor.java +++ b/src/main/java/com/formkiq/gradle/internal/NativeImageExecutor.java @@ -96,9 +96,10 @@ private List getBuildGraalvmImageArguments(final Project project, final String serializationConfig = this.extension.getSerializationConfig(); if (serializationConfig != null) { - addStringArgument(args, serializationConfig, "-H:SerializationConfigurationResources=" + serializationConfig); + addStringArgument(args, serializationConfig, + "-H:SerializationConfigurationResources=" + serializationConfig); } - + addStringArgument(args, this.extension.getFeatures(), "--features=" + this.extension.getFeatures());