在Maven中从JAXB类型生成XSD模式?

在Maven中从JAXB类型生成XSD模式?,maven,jaxb,schemagen,Maven,Jaxb,Schemagen,我试图使用Maven插件从JAXB中注释的模型类中基本生成XSD模式。以下是我的POM中的相关代码: <plugin> <groupId>com.sun.tools.jxc.maven2</groupId> <artifactId>maven-jaxb-schemagen-plugin</artifactId> <version>1.2</version> <executio

我试图使用Maven插件从JAXB中注释的模型类中基本生成XSD模式。以下是我的POM中的相关代码:

<plugin>
    <groupId>com.sun.tools.jxc.maven2</groupId>
    <artifactId>maven-jaxb-schemagen-plugin</artifactId>
    <version>1.2</version>
    <executions>
        <execution>
            <phase>generate-resources</phase>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>

    <configuration>
        <project>${project}</project>
        <destdir>${project.build.directory}/schemas</destdir>
        <srcdir>${project.build.sourceDirectory}/com/floodstream/wowza/mastercontrol/model</srcdir>
        <verbose>true</verbose>
    </configuration>

    <dependencies>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-xjc</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-xjc</artifactId>
            <version>2.2</version>
        </dependency>
    </dependencies>
</plugin>

<!-- other stuff omitted for brevity -->

<pluginRepository>
    <id>maven-repository.dev.java.net</id>
    <name>Java.net Maven 2 Repository</name>
    <url>http://download.java.net/maven/2</url>
</pluginRepository>
这就是胜利:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>1.3.1</version>
    <executions>
        <execution>
            <goals>
                <goal>schemagen</goal>
            </goals>
            <phase>generate-resources</phase>
            <configuration>
                <includes>
                    <include>com/myproject/model/*.java</include>
                </includes>
                <outputDirectory>${project.build.directory}/schemas</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

org.codehaus.mojo
jaxb2 maven插件
1.3.1
schemagen
产生资源
com/myproject/model/*.java
${project.build.directory}/schemas
改进之后,我发现使用当前版本2.2的
jaxb2-maven插件更方便,如本示例中所示(因为2.x版本需要稍微不同的配置):


org.codehaus.mojo

更多详情。

查看相关帖子。我认为jaxb有两个插件,其中一个比另一个好得多(轻描淡写)。我认为右边的artifact-id中有“jaxb2”。既然
schemagen
的功能正在被
javac
所取代,那么该方法是什么?只是将带有相应标志的javac添加到目标中?
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>1.3.1</version>
    <executions>
        <execution>
            <goals>
                <goal>schemagen</goal>
            </goals>
            <phase>generate-resources</phase>
            <configuration>
                <includes>
                    <include>com/myproject/model/*.java</include>
                </includes>
                <outputDirectory>${project.build.directory}/schemas</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>2.2</version>
    <executions>
        <execution>
            <goals>
                <goal>schemagen</goal>
            </goals>
            <phase>generate-resources</phase>
            <configuration>
                <sources>
                    <source>src/main/java/com/foo/model/xml</source>
                </sources>
                <outputDirectory>${project.build.directory}/schemas</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>