Ho un progetto Maven A con un /xsd/a.xsd nel suo classpath. Ho anche il progetto B con un /xsd/b.xsd che si riferisce a /xsd/a.xsd attraverso una voce di catalogo. la voce di catalogo si presenta così:Modifica di xsd con schemi importati dalle dipendenze in Eclipse
PUBLIC "http://foo.org/a" "maven:org.foo:a:jar::!/xsd/a.xsd"
Nota il protocollo Maven nell'url. Il catalogo è utilizzato da org.jvnet.jaxb2.maven2: maven-jaxb22-plugin per generare le classi Java annotate JAXB con gli episodi delle dipendenze.
Tutto è buono finora.
Ora mi piacerebbe modificare /xsd/b.xsd in Eclipse. Eclipse segnalare un avviso su:
<xsd:import namespace="http://foo.org/a" />
in quanto non riesce a trovare il /xsd/a.xsd senza un attributo schemaLocation. Eclipse non riconosce la voce di catalogo definita sopra.
La soluzione trovata è quella di aggiungere una voce di catalogo in Eclipse/Window/Preferences/XML/Catalogo XML:
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"
nota il riferimento alla mia repository locale (Maven è un collegamento a .m2) ea una versione specifica del progetto dipendente a.
Chiunque abbia affrontato questo problema e trovato una soluzione migliore?
Affrontare lo stesso problema, ma non ho trovato soluzioni migliori. Inoltre è un PITA che non puoi nemmeno puntare direttamente alla directory '.m2' a causa del punto. – eis