2013-08-08 7 views
7

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?

+0

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

risposta

1

il meglio che posso venire in mente è:

  • estrarre i XSD del vasetto al progetto con Maven-dipendenza-plugin: decomprimere

  • riferimento i XSD da qui in Eclipse/Catalogo finestre/preferenze/XML/XML.

Almeno non ci sarà riferimento al percorso/versione locale.

Si noti che se si dispone già di un catalogo per jaxb, è possibile importarlo direttamente in eclissi, senza doverlo modificare uno per uno (tramite il menu di importazione, non nel catalogo XML).

+0

estrarre il file .xsds elimina il punto di avere un catalogo, quindi non è necessario il catalogo. Inoltre, anche se si dispone di un catalogo per jaxb, non è possibile importarlo in Eclipse se contiene un riferimento maven poiché Eclipse non lo capisce. – eis

Problemi correlati