java - Maven JAXB 플러그인의 차이점




maven-2 maven-plugin (6)

하나는 원래 JAXB 스펙을위한 것이고 codehaus은 JAXB 2.1 스펙을위한 것입니다 (그리고 dev.java.net이 금세기를로드한다면, 확실히 말할 수 있습니다).

Maven 2 용 JAXB 플러그인이 몇 가지 다른 구성으로 존재한다고 판단했습니다.

하나는 Sun에서 가져온 것이고, 다른 하나는 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-plugin은 Oracle / Sun의 JAXB 참조 구현을 사용합니다.
  • cxf 및 jaxb2-maven-plugin 사용 Apache Xerces

나는 최근에 위에서 언급 한 세 가지 플러그인을 시도했다.

  1. maven-jaxb2-plugin ( http://maven-jaxb2-plugin.java.net/ )
  2. maven-jaxb-plugin ( maven-jaxb-plugin
  3. jaxb2-maven-plugin ( http://mojo.codehaus.org/jaxb2-maven-plugin/ )

나는 네 번째 옵션을 사용하여 끝냈다 : The CXF XJC Maven Plugin 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-plugin 의 저자이다.

maven-jaxb2-plugin은 현재 JAXB 2.1을 사용합니다. 다음 버전에서는 JAXB 2.0 및 JAXB 2.2 버전도 제공 할 예정입니다.

"어떤 플러그인이 더 낫다"는 논의 는 기능을 확인하고 스스로 결정하십시오. 일부 기능을 놓친 경우 알려주십시오.


약간의 접선에서 : here 게시 된 Eclipse Indigo의 maven-jaxb2-plugin 사용에 문제가있었습니다. 최근 수정본이 제공됩니다.

이것은 maven2-jaxb-plugin에 대한 maven-jaxb2-plugin의 권장 사항에 전혀 동의하지 않기위한 것이 아닙니다. 모르겠지만 maven2-jaxb-plugin에는 해결되지 않은 동일한 문제가있을 것으로 예상됩니다.


이것이 내가 찾은 가장 좋은 방법입니다.

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
      <archive>
        <manifest>
        <addClasspath>true</addClasspath>
        <mainClass>com.myDomain.etc.MainClassName</mainClass>
        <classpathPrefix>dependency-jars/</classpathPrefix>
        </manifest>
      </archive>
    </configuration>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.5.1</version>
    <executions>
      <execution>
        <id>copy-dependencies</id>
        <phase>package</phase>
        <goals>
            <goal>copy-dependencies</goal>
        </goals>
        <configuration>
            <outputDirectory>
               ${project.build.directory}/dependency-jars/
            </outputDirectory>
        </configuration>
      </execution>
    </executions>
  </plugin>

이 구성을 사용하면 모든 종속성이 /dependency-jars 있습니다. 내 응용 프로그램에는 Main 클래스가없고 컨텍스트 만있는 응용 프로그램이지만 JMX 서버를 시작하고 start 또는 stop 매개 변수를받는 Main 클래스 ( com.myDomain.etc.MainClassName )가 내 종속성 중 하나에 포함되어 있습니다. 그래서 이것으로 저는 다음과 같이 제 응용 프로그램을 시작할 수있었습니다 :

java -jar ./lib/TestApp-1.0-SNAPSHOT.jar start

나는 그것이 너 모두를 위해 유용 할 때까지 기다린다.





java maven-2 jaxb maven maven-plugin