Maven JaxB 플러그인의 차이
-
19-09-2019 - |
문제
나는 두 가지를 결정했다 JaxB 플러그인 Maven 2는 다른 구성으로 존재합니다.
하나는 태양에서 나온 것입니다. http://jaxb.dev.java.net/jaxb-maven2-plugin/, Mojohaus의 다른 하나 : http://mojohaus.org/jaxb2-maven-plugin/
이 두 플러그인 중 권장 할 수있는 것은 무엇입니까?
감사합니다 Matt. 작은 연구 프로젝트에서 나는 Sunners의 또 다른 플러그인이 있다는 것을 알았습니다.
<groupId>com.sun.tools.xjc.maven2</groupId>
<artifactId>maven-jaxb-plugin</artifactId>
그리고 그 하나 :
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
그리고 여전히 Codehouse에서 온 것입니다.
해결책
요약합시다. 우리는 다음과 같습니다.
- 그만큼 Maven-Jaxb2- 플러그 인 (https://github.com/highsource/maven-jaxb2-plugin)
- 그만큼 Maven-Jaxb-Plugin (https://jaxb.dev.java.net/jaxb-maven2-plugin/)
- 그만큼 JaxB2-Maven-Plugin (https://github.com/mojohaus/jaxb2-maven-plugin)
의견을 바탕으로 이 스레드, 나는 항상 사용했습니다 Maven-Jaxb2- 플러그 인 (즉, 플러그인 #1) :
org.jvnet.jaxb2.maven2 : maven-jaxb2-plugin 대 com.sun.tools.xjc.maven2 : maven-jaxb-plugin, 내 관점에서 그것은 확실히 첫 번째 것입니다 (http://maven-jaxb2-plugin.java.net/).
이 플러그인에는 com.sun.tools.xjc.maven2 : Maven-Jaxb-Plugin보다 훨씬 더 많은 기능이 있습니다. 마지막으로, 저는 저자 중 하나입니다 :) 그리고 우리는 JAXB 개발자 및 사용자와 계속 연락하고 최신 기능/요청에 반응한다고 말하고 싶습니다.
그리고 실제로 플러그인 #2는 매우 활성화되지 않습니다 (죽음?). 그리고 나는 항상 #1에 만족했기 때문에 플러그인 #3을 사용한 적이 없으므로 실제로 그것에 대해 아무 말도 할 수 없습니다. 만일을 대비하여 플러그인 #1에 대한 작업 구성이 있습니다.
<project>
...
<build>
<plugins>
<plugin>
<inherited>true</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
다른 팁
최근에 위에서 언급 한 세 개의 플러그인을 시도했습니다 (여기에 포함).
- Maven-Jaxb2-Plugin (http://maven-jaxb2-plugin.java.net/)
- Maven-Jaxb-Plugin (https://jaxb.dev.java.net/jaxb-maven2-plugin/)
- Jaxb2-Maven-Plugin (http://mojo.codehaus.org/jaxb2-maven-plugin/)
네 번째 옵션을 사용하게되었습니다. CXF XJC Maven 플러그인 http://cxf.apache.org/cxf-xjc-plugin.html
내가 알고 싶은 것을 놓치고 있다면, 구성은 내가하려고했던 일에 대해 더 간단 해 보였고 동일한 네임 스페이스 내에서 중복 클래스 생성을 처리 할 수있게되었고,이 질문과 유사하게. JAXB의 여러 .xsd 파일에서 중복 요소 정의를 처리하는 방법이 있습니까?.
나는 이제 각 들어오는 XSD 및 해당 Java 패키지에 대한 세분화 된 제어를 가지고 있습니다. 다음은 사용중인 샘플 구성이 있습니다.
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-xjc-plugin</artifactId>
<version>2.3.0</version>
<configuration>
<extensions>
<extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:2.3.0</extension>
</extensions>
</configuration>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>xsdtojava</goal>
</goals>
<configuration>
<sourceRoot>${basedir}/target/generated-sources/src/main/java</sourceRoot>
<xsdOptions>
<xsdOption>
<xsd>src/main/resources/schema/commands.xsd</xsd> <!--shares a common.xsd file causing the conflicts-->
<packagename>com.foo.bar.commands</packagename>
</xsdOption>
<xsdOption>
<xsd>src/main/resources/schema/responses.xsd</xsd>
<packagename>com.foo.bar.responses</packagename>
</xsdOption>
</xsdOptions>
</configuration>
</execution>
</executions>
</plugin>
나는 저자입니다 Maven-Jaxb2- 플러그 인.
Maven-Jaxb2-Plugin은 현재 JAXB 2.1을 사용합니다. 다음 버전에서는 JAXB 2.0 및 JAXB 2.2 버전도 제공합니다.
"플러그인이 더 나은"토론에 관해서는 기능을 확인하십시오, 자신을 결정하십시오. 기능을 놓치면 알려주세요.
- Maven-Jaxb2-Plugin은 Oracle/Sun의 JAXB 참조 구현을 사용합니다.
- CXF 및 JAXB2-Maven-Plugin은 Apache Xerces를 사용합니다
약간의 탄젠트 : 내가 게시 한 Eclipse Indigo와 함께 Maven-Jaxb2-Plugin을 사용하는 데 문제가있었습니다. 여기. 최근 수정 (확장)이 가능해졌습니다.
이것은 Maven2-Jaxb-Plugin에 대한 Maven-Jaxb2-Plugin의 권고와 함께 전혀 동의하지 않습니다. 모르겠지만 Maven2-JaxB-Plugin은 같은 문제가있을 것으로 예상됩니다.
하나는 원래 JAXB 사양에 대한 것이고 CodeHaus One은 JAXB 2.1 사양을위한 것 같아요 (그리고 Dev.java.net이 이번 세기에로드 할 경우 확실히 말할 수있을 것입니다).