문제
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는 이상한 오류로 넘어집니다.
제휴하지 않습니다 StackOverflow