2013-12-10 3 views
8

생성 된 JAXB 클래스에 대한 빌더 패턴 클래스를 생성 한 좋은 JAXB 플러그인을 알고 있습니까? JAXB 생성 클래스를 사용하여 도메인을 작성하는 것은 정말 불쾌합니다. 2010 년에 누군가가 쓴 플러그인을 보았지만 가장 최신의 maven plugin 인 jaxb2-maven-plugin을 사용하지 않았으며, 강력하지 않은 각 스키마 유형에 대한 바인딩을 지정해야합니다.Builders를 생성하는 JAXB Plugin이 있습니까?

+0

ObjectFactory 클래스를 생성 했습니까? –

+1

'jaxb-fluent-api'가'cxf-xjc-plugin'으로 어떻게 든 구성 될 수 있다면 훌륭한 해결책이 될지 모르지만 그게 가능한지 확실하지 않습니다. 그것보다 당신이 이미 retepTools에 비틀 거린 것처럼 들리지만 http://blog.retep.org/2010/05/18/implementing-builders-with-jaxb-generated-objects/2/ – pulkitsinghal

+0

이 플러그인은 불변의 것을 생성합니다. 클래스 및 선택적 빌더 - https://github.com/sabomichal/immutable-xjc – miso

답변

3

pom.xml 파일에서 다음 코드는 JAXB 클래스를 생성 받는다는 cxf-xjc-plugin을 사용하고, 또한 점착성을 바탕으로 fluent interfaces ... 정확히 자신의 완전한 빌더 패턴되지 않는 jaxb-fluent-api을 활용 ... 그러나 나는 생각한다 그들은 사람들이 그 방향으로 괜찮은 진보를 할 여지를 남겨 둡니다.

 <!-- Used to generate source code based on XSD (schema) file --> 
     <!-- http://cxf.apache.org/cxf-xjc-plugin.html --> 
     <plugin> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-xjc-plugin</artifactId> 
      <version>2.7.7</version> 
      <configuration> 
       <extensions> 
        <extension>net.java.dev.jaxb2-commons:jaxb-fluent-api:2.1.8</extension> 
       </extensions> 
      </configuration> 
      <executions> 
       <execution> 
        <id>generate-xsd-sources</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>xsdtojava</goal> 
        </goals> 
        <configuration> 
         <sourceRoot>${basedir}/target/generated-sources/cxf-xjc/</sourceRoot> 
         <xsdOptions> 
          <xsdOption> 
           <xsd>${basedir}/src/main/wsdl/your.xsd</xsd> 
           <packagename>com.your.package.name</packagename> 
           <extensionArgs> 
            <extensionArg>-Xfluent-api</extensionArg> 
           </extensionArgs> 
          </xsdOption> 
         </xsdOptions> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
6

예, 이제 JAXB 생성 클래스에 유창한 빌더를 생성하는 플러그인이 있습니다. 유용 JAXB 플러그인의 몇 가지를 포함

https://github.com/mklemm/jaxb2-rich-contract-plugin

에 GitHub의 프로젝트가있다. github에서 소스 및 바이너리를 다운로드 할 수 있습니다.

희망이 있습니다. 궁금한 점이 있으면 저에게 묻습니다. 나는 그것을 시작한 사람입니다.

+0

dtd에서 클래스를 생성 할 때 플러그인을 사용하여 빌더를 생성 할 수 있습니까? – mejas

+0

아직 시도한 사람이 없지만 DTD와 함께 작동하지 않는다고 가정합니다. –