You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@atlas.apache.org by "sanket bhor (Jira)" <ji...@apache.org> on 2026/10/21 15:17:00 UTC

[jira] [Updated] (ATLAS-5432) CI: Fix Enunciate JDK 8 build failure and enable parallel matrix execution

     [ https://issues.apache.org/jira/browse/ATLAS-5432?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

sanket bhor updated ATLAS-5432:
-------------------------------
    Description: 
The CI pipeline has two issues affecting all PRs:

 

*1. Enunciate Maven plugin fails on JDK 8 :*

The JDK 8 build fails during the Enunciate documentation generation phase with:
{code:java}
[ERROR] Failed to execute goal com.webcohesion.enunciate:enunciate-maven-plugin:2.13.2:docs (default) on project atlas-webapp: Execution default of goal com.webcohesion.enunciate:enunciate-maven-plugin:2.13.2:docs failed:A required class was missing while executing   com.webcohesion.enunciate:enunciate-maven-plugin:2.13.2:docs: com/sun/tools/javac/api/JavacTool {code}
*Root Cause : What triggered the failure*

The GitHub Actions ubuntu-22.04 runner image 20261004.315 (published Oct 5, 2026) silently upgraded Maven from 3.9.16 to 3.10.0. Maven 3.10.0 ships Maven Resolver 2.x (up from Resolver 1.x in 3.9.16), which is stricter about system-scoped dependencies.

runs-on: ubuntu-22.04 is a floating image tag — GitHub auto-rolls the VM image weekly. Atlas has no Maven wrapper (mvnw) and no actions/setup-maven step, so Maven comes entirely from the runner image. The upgrade happened with zero code changes.

*How Maven Resolver 2.x breaks Enunciate 2.13.2*

{*}Maven Resolver 2.x behavior change (apache/maven#12948){*}: Dependency management entries that declare system scope or a systemPath in POMs resolved from a repository are now actively dropped and a warning is logged. In Resolver 1.x (Maven 3.9.x and earlier), these entries were tolerated and passed through to plugin classloaders.

*How this affects Enunciate 2.13.2:*

1. Enunciate 2.13.2's core class (Enunciate.java) directly imports com.sun.tools.javac.api.JavacTool — an internal JDK class that lives in tools.jar on JDK 8.
2. The enunciate-javac-support module declares tools.jar as a system-scoped dependency via a profile:
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
3. System-scoped dependencies are not transitive in Maven's dependency model — they never reach downstream consumers' classloaders.
4. Under Resolver 1.x (Maven ≤ 3.9.x), this was a latent bug — tools.jar happened to be available on the JVM boot classpath, so the missing transitive dep was masked.
5. Under Resolver 2.x (Maven 3.10.0+), system-scoped entries are actively stripped from resolved POMs. Combined with the non-transitive nature, tools.jar is completely absent from the enunciate-maven-plugin classloader → JavacTool class not found → build fails.

Upstream issue: stoicflame/enunciate#1244 (opened Oct 2, 2026 — still open, no fix released).

*Why JDK 17 builds are NOT affected*

The jdk-17 Maven profile (in root pom.xml) switches to Enunciate 2.15.0, which:
- Dropped the tools.jar / enunciate-javac-support dependency entirely
- Uses javax.tools.ToolProvider.getSystemJavaCompiler() — the public standard API that requires no system-scoped dependency
- Has zero system-scoped dependencies, so Maven Resolver 2.x has nothing to strip

 

*2. JDK 8 failure cancels JDK 17 build :* 
The CI matrix strategy uses the default fail-fast: true, which means when the JDK 8 job fails, the JDK 17 job is cancelled. Both jobs should run independently.                                                

  was:
The CI pipeline has two issues affecting all PRs:

 

*1. Enunciate Maven plugin fails on JDK 8 :*

The JDK 8 build fails during the Enunciate documentation generation phase with:
{code:java}
[ERROR] Failed to execute goal com.webcohesion.enunciate:enunciate-maven-plugin:2.13.2:docs (default) on project atlas-webapp: Execution default of goal com.webcohesion.enunciate:enunciate-maven-plugin:2.13.2:docs failed:A required class was missing while executing   com.webcohesion.enunciate:enunciate-maven-plugin:2.13.2:docs: com/sun/tools/javac/api/JavacTool {code}
Root cause: Enunciate 2.13.2 (used for JDK < 17) depends on enunciate-javac-support, which requires com.sun.tools.javac.api.JavacTool from tools.jar. The enunciate-javac-support POM declares tools.jar as a     system-scoped dependency via a profile, but system-scoped dependencies are not transitive in Maven — so tools.jar never reaches the enunciate-maven-plugin classloader. This was a latent issue exposed by a      GitHub Actions runner image update (Temurin JDK 8 distribution update) that changed how tools.jar is loaded at JVM boot time.                                                                                                                                                                                                                                                              No changes were made to the CI workflow file (ci.yml) or Enunciate configuration — this is an environment-level change.

 

*2. JDK 8 failure cancels JDK 17 build :* 
The CI matrix strategy uses the default fail-fast: true, which means when the JDK 8 job fails, the JDK 17 job is cancelled. Both jobs should run independently.                                                


> CI: Fix Enunciate JDK 8 build failure and enable parallel matrix execution
> --------------------------------------------------------------------------
>
>                 Key: ATLAS-5432
>                 URL: https://issues.apache.org/jira/browse/ATLAS-5432
>             Project: Atlas
>          Issue Type: Task
>            Reporter: sanket bhor
>            Assignee: sanket bhor
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> The CI pipeline has two issues affecting all PRs:
>  
> *1. Enunciate Maven plugin fails on JDK 8 :*
> The JDK 8 build fails during the Enunciate documentation generation phase with:
> {code:java}
> [ERROR] Failed to execute goal com.webcohesion.enunciate:enunciate-maven-plugin:2.13.2:docs (default) on project atlas-webapp: Execution default of goal com.webcohesion.enunciate:enunciate-maven-plugin:2.13.2:docs failed:A required class was missing while executing   com.webcohesion.enunciate:enunciate-maven-plugin:2.13.2:docs: com/sun/tools/javac/api/JavacTool {code}
> *Root Cause : What triggered the failure*
> The GitHub Actions ubuntu-22.04 runner image 20261004.315 (published Oct 5, 2026) silently upgraded Maven from 3.9.16 to 3.10.0. Maven 3.10.0 ships Maven Resolver 2.x (up from Resolver 1.x in 3.9.16), which is stricter about system-scoped dependencies.
> runs-on: ubuntu-22.04 is a floating image tag — GitHub auto-rolls the VM image weekly. Atlas has no Maven wrapper (mvnw) and no actions/setup-maven step, so Maven comes entirely from the runner image. The upgrade happened with zero code changes.
> *How Maven Resolver 2.x breaks Enunciate 2.13.2*
> {*}Maven Resolver 2.x behavior change (apache/maven#12948){*}: Dependency management entries that declare system scope or a systemPath in POMs resolved from a repository are now actively dropped and a warning is logged. In Resolver 1.x (Maven 3.9.x and earlier), these entries were tolerated and passed through to plugin classloaders.
> *How this affects Enunciate 2.13.2:*
> 1. Enunciate 2.13.2's core class (Enunciate.java) directly imports com.sun.tools.javac.api.JavacTool — an internal JDK class that lives in tools.jar on JDK 8.
> 2. The enunciate-javac-support module declares tools.jar as a system-scoped dependency via a profile:
> <scope>system</scope>
> <systemPath>${java.home}/../lib/tools.jar</systemPath>
> 3. System-scoped dependencies are not transitive in Maven's dependency model — they never reach downstream consumers' classloaders.
> 4. Under Resolver 1.x (Maven ≤ 3.9.x), this was a latent bug — tools.jar happened to be available on the JVM boot classpath, so the missing transitive dep was masked.
> 5. Under Resolver 2.x (Maven 3.10.0+), system-scoped entries are actively stripped from resolved POMs. Combined with the non-transitive nature, tools.jar is completely absent from the enunciate-maven-plugin classloader → JavacTool class not found → build fails.
> Upstream issue: stoicflame/enunciate#1244 (opened Oct 2, 2026 — still open, no fix released).
> *Why JDK 17 builds are NOT affected*
> The jdk-17 Maven profile (in root pom.xml) switches to Enunciate 2.15.0, which:
> - Dropped the tools.jar / enunciate-javac-support dependency entirely
> - Uses javax.tools.ToolProvider.getSystemJavaCompiler() — the public standard API that requires no system-scoped dependency
> - Has zero system-scoped dependencies, so Maven Resolver 2.x has nothing to strip
>  
> *2. JDK 8 failure cancels JDK 17 build :* 
> The CI matrix strategy uses the default fail-fast: true, which means when the JDK 8 job fails, the JDK 17 job is cancelled. Both jobs should run independently.                                                



--
This message was sent by Atlassian Jira
(v8.20.10#820010)