2013-08-08 2 views
7

클래스 경로에 /xsd/a.xsd가있는 maven 프로젝트 A가 있습니다. 카탈로그 항목을 통해 /xsd/a.xsd를 참조하는 /xsd/b.xsd가있는 프로젝트 B도 있습니다. 카탈로그 항목은 다음과 같습니다Eclipse에서 종속성에서 가져온 스키마를 사용하여 xsd 편집

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

참고 URL에 받는다는 프로토콜입니다. 카탈로그는 org.jvnet.jaxb2.maven2 : maven-jaxb22-plugin에 의해 사용되어 종속성의 에피소드가있는 JAXB 주석이있는 Java 클래스를 생성합니다.

지금까지 모든 것이 훌륭합니다.

이제 Eclipse에서 /xsd/b.xsd를 편집하고 싶습니다. 그것은 schemaLocation 속성없이 /xsd/a.xsd을 찾을 수

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

:에 경고를보고 이클립스. Eclipse는 위에 정의 된 카탈로그 항목을 인식하지 못합니다.

발견 된 해결 방법은 이클립스/창/환경 설정/XML/XML 카탈로그에서 카탈로그 항목을 추가하는 것입니다 : (받는다는는 .m2 수있는 링크입니다)

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" 

주 내 로컬 저장소에 대한 참조를하고에 종속 프로젝트의 특정 버전 a.

누구든지이 문제에 직면하고 더 나은 해결 방법을 찾았습니까?

+0

같은 문제가 있지만 더 나은 해결 방법을 찾지 못했습니다. 또한 점 때문에 점으로'.m2' 디렉토리를 직접 가리킬 수없는 PITA입니다. – eis

답변

1

내가 가지고 올 수있는 최선입니다/

  • 참조 이클립스 여기에서 XSD를 압축을 풉니 다 :

    • 받는다는 - 종속성 플러그인 프로젝트에 항아리의 XSD를 추출 창/환경 설정/XML/XML 카탈로그.

    적어도 로컬 경로/버전에 대한 참조는 없습니다.

    이미 jaxb 용 카탈로그가있는 경우 하나씩 편집하지 않고도 이클립스에서 직접 가져올 수 있습니다 (XML 카탈로그가 아닌 가져 오기 메뉴를 통해).

  • +0

    .xsds를 추출하면 카탈로그가있는 지점을 패배 시키므로 카탈로그가 필요하지 않습니다. 또한 jaxb에 대한 카탈로그가 있더라도 Eclipse에서 이해할 수 없기 때문에 maven 참조가 포함되어 있으면 Eclipse로 가져올 수 없습니다. – eis

    관련 문제