Seeking Assurance That Patching gradle-api-6.{...}.jar Is At Least Technically Possible - Somehow

Alan Bateman Alan.Bateman at oracle.com
Wed Nov 13 07:55:08 UTC 2019


On 12/11/2019 23:45, Plugins wrote:
> Gradle makes heavy use a lot of stuff in the javax.xml.* and org.w3c.*
> packages internally [1] And, again, this shaded jar we're talking about
> is generated on demand — IFF a Gradle plugin author happens to have
> applied a specific internal Gradle plugin that is only ever applied to
> assist in the development of custom Gradle plugins. So this api jar is
> not actually „distributed“ in the same sense that other artifacts
> are normally „distributed“ — through a public repository, say.
>
> I can't say with 100% certainty, but I _think_ everything contained in
> this shaded JAR is expected to never show up on the classpath(s) of end
> users of my plugin for example.
>
> So I think you're right, Alan. Those xml-apis dependencies in that
> shaded JAR are probably just one of a ton of other rebundled internal
> dependencies that Gradle itself needs to support the plugin development
> use case.
>
I've no doubt that Gradle is making use of the XML processing and W3C 
DOM APIs but they are provided by the JDK so I don't know why Gradle 6.0 
includes xml-apis-1.4.01.jar in its distribution. If you run with 
`-Xlog:class+load` then I assume none of the javax.xml.* and org.w3c.* 
classes are loaded from this JAR file, this goes for JDK 8 and older too.

I took a quite look at xml-apis-1.4.01.jar and it looks like a copy of 
the XML API classes (not the implementation) from a very old JDK or JAXP 
release. The class files v45.3 = JDK 1.0.2 :-) The class files seems to 
have been compiled in Dec 2009 and I suspect were compiled from the JAXP 
API classes that were in Java SE 6 (one of the classes defines a method 
that was added in Java SE 6). So my guess is that this JAR file has been 
obsolete for a long time. It may have been used for deployments on JDK 5 
or older that could upgrade the JDK but want to use newer versions of 
the XML APIs. Alternatively, maybe it was useful for the period when the 
JDK didn't include the all of the W3C API.

Hopefully someone from Gradle can comment on this issue, my guess is 
that xml-apis is not needed.

-Alan


More information about the jigsaw-dev mailing list