2017-11-14 1 views
1

아래 코드를 사용하여 주석이 달린 Java 클래스에서 XSD를 생성합니다. XSD의 기본 이름은 항상 "schema1.xsd"입니다. 해당 플러그인 만 사용하여 사전 정의하려면 어떻게해야합니까? 지금은 파일 이름 바꾸기를 위해 maven-antrun-plugin을 사용합니다. Plugin manual에는 관련 정보가 없습니다.jaxb2-maven-plugin을 사용하여 XSD 파일 이름을 미리 정의하는 방법

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>jaxb2-maven-plugin</artifactId> 
    <version>2.3</version> 
    <executions> 
    <execution> 
     <goals> 
     <goal>schemagen</goal> 
     </goals> 
     <phase>generate-sources</phase> 
     <configuration> 
     <sources> 
      <source>src/main/java/***some package***</source> 
     </sources> 
     <outputDirectory>${project.build.directory}/generated-sources/schemas</outputDirectory> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

답변

2

답변이 발견되었습니다. Java 클래스에 JAXB 주석을 사용하여 주석을 지정하는 것으로는 충분하지 않습니다. 다음과 같은 내용으로 파일 "package-info.java을"존재해야 DTO 패키지에 :

@XmlSchema(namespace = "http://your-namespace") 
package com.your.package; 

import javax.xml.bind.annotation.XmlSchema; 

그리고 플러그인 선언과 같아야합니다

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>jaxb2-maven-plugin</artifactId> 
    <version>2.3</version> 
    <executions> 
    <execution> 
     <goals> 
     <goal>schemagen</goal> 
     </goals> 
     <phase>generate-sources</phase> 
    </execution> 
    </executions> 
    <configuration> 
    <sources> 
     <source>src/main/java/com/your/package</source> 
    </sources> 
    <outputDirectory>${project.build.directory}/generated-sources/schemas</outputDirectory> 
    <transformSchemas> 
     <transformSchema> 
     <uri>http://your-namespace</uri> 
     <toFile>your-namespace.xsd</toFile> 
     </transformSchema> 
    </transformSchemas> 
    </configuration> 
</plugin> 
관련 문제