Skip to content

Commit a0a2f61

Browse files
spboltonclaude
andcommitted
fix(ci): use property-based compiler release for CLI modules
Replace CLI module exclusion approach with a cleaner property-based isolation strategy. Changes: - Add dotcms.cli.compiler.release property in parent/pom.xml (defaults to 21) - CLI module POM now uses ${dotcms.cli.compiler.release} instead of hardcoded 11 - Remove CLI exclusion logic from maven-job action This allows: - Global maven.compiler.release can be set to any version (e.g., 25) - CLI modules always compile with safe bytecode version (21) for Quarkus/GraalVM - Single Maven reactor build (no exclusions or multi-pass) - Clean property-based separation of concerns Example usage: ./mvnw clean install -Dmaven.compiler.release=25 # Main modules: Java 25 bytecode # CLI modules: Java 21 bytecode (Quarkus compatible) This resolves ASM limitation: java.lang.IllegalArgumentException: Unsupported class file major version 69 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 895a01f commit a0a2f61

3 files changed

Lines changed: 11 additions & 11 deletions

File tree

.github/actions/core-cicd/maven-job/action.yml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -233,15 +233,9 @@ runs:
233233
DEFAULT_ARGS="$DEFAULT_ARGS -Pnative"
234234
fi
235235
236-
# Skip CLI modules when java-version is overridden (Quarkus/GraalVM compatibility)
237-
CLI_EXCLUSION=""
238-
if [[ -n "${{ inputs.java-version }}" ]]; then
239-
CLI_EXCLUSION="-pl '!:dotcms-cli-parent,!:dotcms-api-data-model,!:dotcms-cli'"
240-
echo "Excluding CLI modules due to java-version override (Quarkus/GraalVM compatibility)"
241-
fi
242-
243236
# Add Maven compiler release override flag
244237
# Priority: explicit maven-compiler-release > default from java-version major > project defaults
238+
# Note: CLI modules use dotcms.cli.compiler.release property (hardcoded to 21) for Quarkus/GraalVM compatibility
245239
COMPILER_ARGS=""
246240
if [[ -n "${{ inputs.maven-compiler-release }}" ]]; then
247241
# Explicit release override takes precedence
@@ -254,7 +248,7 @@ runs:
254248
echo "Defaulting maven.compiler.release=${JAVA_MAJOR} to match java-version"
255249
fi
256250
257-
FINAL_ARGS=$(echo "$DEFAULT_ARGS $CLI_EXCLUSION $COMPILER_ARGS $MAVEN_ARGS" | tr ' ' '\n' | awk '!seen[$0]++' | tr '\n' ' ')
251+
FINAL_ARGS=$(echo "$DEFAULT_ARGS $COMPILER_ARGS $MAVEN_ARGS" | tr ' ' '\n' | awk '!seen[$0]++' | tr '\n' ' ')
258252
259253
if [[ "${{ runner.os }}" == "Windows" && "${{ inputs.native }}" == "true" ]]; then
260254
echo "Building Maven with args $FINAL_ARGS"

parent/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@
3131
<maven.compiler.target>${maven.compiler.release}</maven.compiler.target>
3232
<maven.compiler.testSource>${maven.compiler.source}</maven.compiler.testSource>
3333
<maven.compiler.testTarget>${maven.compiler.target}</maven.compiler.testTarget>
34+
35+
<!-- CLI modules compiler release - separate property to support Java version override testing
36+
Defaults to 21 for Quarkus/GraalVM compatibility (max supported by ASM in Quarkus 3.6.0) -->
37+
<dotcms.cli.compiler.release>21</dotcms.cli.compiler.release>
3438
<java.module.args>
3539
--add-modules java.se,jdk.management.agent
3640
--add-exports java.base/jdk.internal.ref=ALL-UNNAMED

tools/dotcms-cli/pom.xml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@
2424
<quarkus.platform.version>3.6.0</quarkus.platform.version>
2525
<jreleaser-plugin.version>1.8.0</jreleaser-plugin.version>
2626
<google.findbugs.version>3.0.2</google.findbugs.version>
27-
<maven.compiler.release>11</maven.compiler.release>
28-
<maven.compiler.source>11</maven.compiler.source>
29-
<maven.compiler.target>11</maven.compiler.target>
27+
<!-- Use dedicated CLI compiler release property for Quarkus/GraalVM compatibility
28+
This isolates CLI from global maven.compiler.release overrides -->
29+
<maven.compiler.release>${dotcms.cli.compiler.release}</maven.compiler.release>
30+
<maven.compiler.source>${dotcms.cli.compiler.release}</maven.compiler.source>
31+
<maven.compiler.target>${dotcms.cli.compiler.release}</maven.compiler.target>
3032

3133
</properties>
3234

0 commit comments

Comments
 (0)