문제

JAXB를 사용하여 XSD 파일에서 Java 클래스를 생성하기 위해이 Maven "작업"이 있습니다.

        <!-- XML to Java classes -->
        <plugin>
            <groupId>com.sun.tools.xjc.maven2</groupId>
            <artifactId>maven-jaxb-plugin</artifactId>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <generatePackage>nl.compay.service</generatePackage>
                <schemaDirectory>src/main/webapp/compay</schemaDirectory>
            </configuration>
        </plugin>

XSD 유형 "사용자"의 경우 "사용자"(DUH)라는 클래스를 생성합니다. 그러나 "사용자"라는 JPA 엔티티 클래스도 있습니다 (다른 패키지에서는 있지만). 위의 XML 구성을 변경하여 JAXB가 "XML"과 같은 것으로 생성 된 클래스를 접두사로 만들 수 있습니까?

도움이 되었습니까?

해결책

이것은 일반적인 요구 사항입니다. JAXB가 스키마 유형 이름을 Java 클래스 이름으로 변환하는 방법을 사용자 정의하기 위해 추가 JAXB 바인딩 파일을 제공하여이를 수행 할 수 있습니다.

이 파일은 일반적으로 ".xjb"확장으로 끝납니다. 예를 들어 스키마를 위해 스키마를 만들어야합니다.

<jxb:bindings version="1.0" 
  xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
  jxb:extensionBindingPrefixes="xjc">

    <jxb:bindings schemaLocation="nl.company.service.xsd" node="/xs:schema">
        <jxb:schemaBindings>
            <jxb:nameXmlTransform>
                <jxb:typeName prefix="XML"/>
                <jxb:anonymousTypeName prefix="XML"/>
            </jxb:nameXmlTransform>
        </jxb:schemaBindings>
    </jxb:bindings>

</jxb:bindings>

그렇게 한 후에는 빌드 디렉토리 어딘가에 XJB 파일을 놓고 Maven에게 번역 중에 사용하도록 지시하십시오.

<includeBindings>
    <includeBinding>mybindings.xjb</includeBinding>
</includeBindings>

그리고 여기 도로에 대한 힌트가 있습니다. 공백이 포함 된 길에 있다면 (예 : "문서 및 설정 user project") JaxB는 이상한 오류로 넘어집니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top