2013-08-08 19 views
7

Ich habe ein Maven-Projekt A mit einem /xsd/a.xsd in seinem Klassenpfad. Ich habe auch das Projekt B mit einer /xsd/b.xsd, die auf/XSD/a.xsd durch einen Katalogeintrag verweist. Der Katalogeintrag sieht wie folgt aus:Bearbeiten eines xsd mit importierten Schemas aus Abhängigkeiten in Eclipse

PUBLIC "http://foo.org/a" "maven:org.foo:a:jar::!/xsd/a.xsd" 

Notiere die Maven-Protokoll in der URL. Der Katalog wird vom org.jvnet.jaxb2.maven2: maven-jaxb22-plugin verwendet, um die mit JAXB annotierten Java-Klassen mit Episoden aus Abhängigkeiten zu generieren.

Alles ist gut so weit.

Jetzt möchte ich /xsd/b.xsd in Eclipse bearbeiten. Eclipse-Bericht eine Warnung auf:

<xsd:import namespace="http://foo.org/a" /> 

, da es nicht die /xsd/a.xsd ohne schema Attribut finden. Eclipse erkennt den oben definierten Katalogeintrag nicht.

gefunden dieses Problem umgehen, einen Katalogeintrag in Eclipse/Window/Preferences/XML/XML-Katalog hinzuzufügen:

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" 

Hinweis der Verweis auf meinem lokalen Repository (Maven ist ein Link zu .m2) und eine bestimmte Version des abhängigen Projekts a.

Jeder, der dieses Problem erkannt und eine bessere Problemumgehung gefunden hat?

+0

Mit dem gleichen Problem konfrontiert, aber keine bessere Problemumgehung gefunden. Es ist auch eine PITA, die man wegen des Punktes nicht direkt auf das .m2'-Verzeichnis verweisen kann. – eis

Antwort

1

Das Beste, was ich mit oben kommen kann ist:

  • die XSDs des Glases in dem Projekt mit Maven-Abhängigkeit-Plugin extrahiert:

  • Referenz die XSDs von hier in Eclipse entpacken/Fenster/Einstellungen/XML/XML-Katalog.

Zumindest wird es keinen Verweis auf lokalen Pfad/Version geben.

Wenn Sie bereits einen Katalog für jaxb haben, können Sie ihn direkt in Eclipse importieren, ohne einzeln bearbeiten zu müssen (über das Importmenü, nicht im XML-Katalog).

+0

Wenn Sie die .xsds extrahieren, wird der Punkt, an dem Sie einen Katalog haben, nicht mehr benötigt. Dann brauchen Sie den Katalog überhaupt nicht. Auch wenn Sie einen Katalog für jaxb haben, können Sie ihn nicht in Eclipse importieren, wenn er eine Maven-Referenz enthält, da Eclipse sie nicht versteht. – eis