クラスパスに /xsd/a.xsd を持つ Maven プロジェクト A があります。また、プロジェクト B には、カタログ エントリを介して /xsd/a.xsd を参照する /xsd/b.xsd があります。カタログ エントリは次のようになります。
PUBLIC "http://foo.org/a" "maven:org.foo:a:jar::!/xsd/a.xsd"
URL の Maven プロトコルに注意してください。カタログは org.jvnet.jaxb2.maven2:maven-jaxb22-plugin によって使用され、依存関係からのエピソードを含む JAXB アノテーション付き Java クラスを生成します。
これまでのところ、すべてが良好です。
ここで、Eclipse で /xsd/b.xsd を編集したいと思います。Eclipse は次の警告を報告します。
<xsd:import namespace="http://foo.org/a" />
schemaLocation 属性がないと /xsd/a.xsd を見つけることができないためです。Eclipse は、上記で定義されたカタログ エントリを認識しません。
見つかった回避策は、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"
私のローカル リポジトリ (maven は .m2 へのリンク) への参照と、依存プロジェクトの特定のバージョンへの参照に注意してください。
この問題に直面し、より良い回避策を見つけた人はいますか?