[ 
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)

Reply via email to