XSD-9 在 Maven 项目使用 XJC 代码生成器
9 在 Maven 项目使用 XJC 代码生成器
使用 Maven 的 maven-archetype-quickstart
的代码模板快速搭建测试项目:
mvn archetype:generate -DgroupId=net.csdn -DartifactId=JaxbGen -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
在 Maven 的 pom.xml 文件中添加如下内容:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>xjc</id>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<schemaDirectory>${project.basedir}/src/main/resources/config</schemaDirectory>
<packageName>com.csdn.xml</packageName>
<outputDirectory>${project.basedir}/src/jaxb-gen/java-gen</outputDirectory>
<extension>true</extension>
</configuration>
</plugin>
使用 org.codehaus.mojo 组织的 jaxb2-maven-plugin 插件,在官网是这么介绍的:
org.codehaus.mojo/jaxb2-maven-plugin
Generates Java classes from XML Schemas (and binding files) and creates XML Schemas from annotated Java classes, using JAXB2.
<schemaDirectory>
,指示 xsd schema 文件的位置,其中${project.basedir}
是 maven pom.xml 内嵌的变量,指示该项目根目录的绝对路径;<packageName>
,指示由 xjc 生成的 Java Bean Class 的类包名称,在 Java 中,类包名称以点号(.
)分隔,对应操作系统的文件树;<outputDirectory>
,指示由 xjc 生成的 Java Bean Class,存放的根目录;假如,<outputDirectory>C:/</outputDirectory>
,并且<packageName>net.csdn.xml</packageName>
,那么针对<xs:complexType name="Student"/>
复杂类型生成的 Java Bean Class 的存储位置为C:/net/csdn/xml/Student.java
;<extension>
,指示 xjc 的extension
参数;
即可实现与以下指令相同的执行效果:
xjc -b ${project.basedir}/src/main/resources/config -d ${project.basedir}/src/jaxb-gen -p com.csdn.xml -extension
注:org.codehaus.mojo/jaxb2-maven-plugin
版本 2.5.0 将标签 <schemaDirectory>
移除,约定在 ~/src/main/xjb/
与 ~/src/main/xsd/
存放 schema 文件;而如果使用 1.6 版本,则必须指定标签 <schemaDirectory>
,插件才能找到对应的 xsd 文件。
以下是 org.codehaus.mojo/jaxb2-maven-plugin(version 2.5.0)
的编译输出。
[INFO] --- jaxb2-maven-plugin:2.5.0:xjc (xjc) @ JaxbGen ---
[WARNING] Using platform encoding [GBK], i.e. build is platform dependent!
[INFO] Created EpisodePath [C:\java\JaxbGen\src\jaxb-gen\META-INF\JAXB]: true
[INFO] Ignored given or default xjbSources [C:\java\JaxbGen\src\main\xjb], since it is not an existent file or directory.
[INFO] Ignored given or default sources [C:\java\JaxbGen\src\main\xsd], since it is not an existent file or directory.
[WARNING] No XSD files found. Please check your plugin configuration.
上一章:XSD-8 JAXB 验证 XSD Schema 限定
目录:学习 JAXB
下一章:XSD-10 XSD Schema 的应用场景