I have a maven project A with an /xsd/a.xsd in it's classpath. I also have the project B with an /xsd/b.xsd that refers to /xsd/a.xsd through a catalog entry. The catalog entry looks like this:
PUBLIC "http://foo.org/a" "maven:org.foo:a:jar::!/xsd/a.xsd"
Note the maven protocol in the url. The catalog is used by the org.jvnet.jaxb2.maven2:maven-jaxb22-plugin to generate the JAXB annotated Java classes with episodes from dependencies.
Everything is good so far.
Now I would like to edit /xsd/b.xsd in Eclipse. Eclipse report a warning on:
<xsd:import namespace="http://foo.org/a" />
as it cannot find the /xsd/a.xsd without a schemaLocation attribute. Eclipse does not recognize the catalog entry defined above.
The workaround found is to add a catalog entry in Eclipse / Window / Preferences / XML / XML Catalog:
PUBLIC "http://foo.org/a" "jar:file:/home/alain/maven/repository/org/foo/a/1.0-SNAPSHOT/a-1.0-SNAPSHOT.jar!/xsd/a.xsd"
Note the reference to my local repository (maven is a link to .m2) and to a specific version of the dependent project a.
Anyone having faced this issue and found a better workaround?
The Best I can come up with is :
extract the xsds of the jar in the project with maven-dependency-plugin:unpack
reference the xsds from here in Eclipse / Window / Preferences / XML / XML Catalog.
At least there will be no reference to local path/version.
Note that if you have already a catalog for jaxb, it is possible to import it directly in eclipse, without having to edit one by one (Via import menu, not in XML Catalog).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With