sundapeng opened a new pull request, #8913:
URL: https://github.com/apache/paimon/pull/8913

   ### Purpose
   
   The filesystem impl modules (`paimon-oss-impl`, `paimon-s3-impl`, 
`paimon-azure-impl`, `paimon-cosn-impl`, `paimon-gs-impl`) unpack the whole 
`jaxb-api` jar into `target/classes/META-INF/versions/11`. Since `jaxb-api` is 
itself a multi-release jar, its own `META-INF` tree gets nested into the 
output, producing malformed entries such as:
   
   ```
   META-INF/versions/11/javax/xml/bind/ModuleUtil.class
   META-INF/versions/11/META-INF/versions/9/javax/xml/bind/ModuleUtil.class   
<- nested
   META-INF/versions/11/META-INF/MANIFEST.MF
   META-INF/versions/11/META-INF/LICENSE.txt
   ```
   
   Both `ModuleUtil.class` entries have the same internal class name 
`javax/xml/bind/ModuleUtil` but different bytecode. Any tool that scans the 
unpacked classes directory chokes on the duplicate. For example, JaCoCo fails 
with:
   
   ```
   java.io.IOException: Error while analyzing 
.../META-INF/versions/11/javax/xml/bind/ModuleUtil.class
   Caused by: java.lang.IllegalStateException: Can't add different class with 
same name: javax/xml/bind/ModuleUtil
   ```
   
   The nesting also propagates into downstream artifacts: `paimon-jindo` shades 
`META-INF/versions/11/**` from `paimon-oss-impl`, so its jar carried the same 
malformed entries.
   
   This PR excludes the jar's own `META-INF/**` when unzipping into 
`META-INF/versions/11`. The nested `META-INF/versions/9` variants were never 
resolvable at runtime anyway (nested multi-release directories are not a 
thing), so there is no functional change. The now-unnecessary 
`META-INF/versions/11/META-INF/maven/**` shade exclude is removed along with it.
   
   Verified locally by rebuilding all five impl modules plus `paimon-jindo`:
   - no `META-INF/versions/11/META-INF/**` entries remain, and the 121 
`META-INF/versions/11/javax/**` classes are intact;
   - JaCoCo `Analyzer.analyzeAll` on the unpacked jar contents now passes 
(previously threw the exception above).
   
   ### Tests
   
   Packaging-only change, covered by the manual verification above.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to