在Maven中从JAXB类型生成XSD模式?
我试图使用Maven插件从JAXB中注释的模型类中基本生成XSD模式。以下是我的POM中的相关代码:在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
<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>