2013-08-08 12 views
7

Mam maven projektu A z /xsd/a.xsd w jego classpath. Mam również projekt B z plikiem /xsd/b.xsd, który odwołuje się do /xsd/a.xsd poprzez wpis w katalogu. Wpis Katalog wygląda następująco:Edycja XSD zaimportowanych schematów z zależności w Eclipse

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

Uwaga protokół Maven w adresie URL. Katalog jest używany przez wtyczkę org.jvnet.jaxb2.maven2: maven-jaxb22 do generowania przypisanych do JAXB klas Java z odcinkami zależności.

Wszystko do tej pory dobre.

Teraz chciałbym edytować /xsd/b.xsd w Eclipse. Eclipse zgłosić ostrzeżenie na:

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

ponieważ nie może znaleźć /xsd/a.xsd bez atrybutu schemaLocation. Eclipse nie rozpoznaje zdefiniowanej powyżej pozycji katalogu.

Obejście znaleźć to dodać wpis do katalogu w Eclipse/okna/Preferencje/XML/XML katalogowy:

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" 

Uwaga odniesienie do mojego lokalnym repozytorium (Maven jest link do .m2) oraz konkretna wersja zależnego projektu.

Ktoś, kto spotkał się z tym problemem i znalazł lepsze rozwiązanie?

+0

Wobec tego samego problemu, ale nie znaleziono lepszego rozwiązania tego problemu. Również jest to PITA, którego nie można nawet wskazać bezpośrednio do katalogu '.m2' z powodu kropki. – eis

Odpowiedz

1

Best mogę wymyślić to:

  • wyodrębnić XSD słoika w projekcie z maven zależność plugin: rozpakować

  • referencyjne XSD stąd w Eclipse/Okno/Preferencje/Katalog XML/XML.

Przynajmniej nie będzie odniesienia do lokalnej ścieżki/wersji.

Pamiętaj, że jeśli posiadasz już katalog dla jaxb, możliwe jest zaimportowanie go bezpośrednio w Eclipse, bez konieczności edycji jeden po drugim (za pomocą menu importu, a nie w katalogu XML).

+0

Wyodrębnianie .xsds pokonuje punkt posiadania katalogu, wtedy nie będziesz potrzebował katalogu w ogóle. Ponadto, nawet jeśli posiadasz katalog dla jaxb, nie możesz zaimportować go do Eclipse, jeśli zawiera on odwołanie maven, ponieważ Eclipse tego nie rozumie. – eis