我使用jaxb2-maven-plugin的xjc目标从一组 xsd 文件生成 Java 类。
一个最小的、完整的和可验证的示例是具有以下 pom.xml 文件的 Maven 项目:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>jaxb2-maven-episode-test</artifactId>
<version>1.0</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>xjc</id>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<sources>
<source>${project.basedir}/src/main/resources/</source>
</sources>
<generateEpisode>false</generateEpisode>
</configuration>
</plugin>
</plugins>
</build>
</project>
在src/main/resources/文件夹中有一个名为example.xsd的文件(任何有效的 xsd 文件都可以):
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://tempuri.org/PurchaseOrderSchema.xsd"
targetNamespace="http://tempuri.org/PurchaseOrderSchema.xsd"
elementFormDefault="qualified">
<xsd:element name="PurchaseOrder" type="tns:PurchaseOrderType"/>
<xsd:complexType name="PurchaseOrderType">
<xsd:sequence>
<xsd:element name="ShipTo" type="tns:USAddress" maxOccurs="2"/>
<xsd:element name="BillTo" type="tns:USAddress"/>
</xsd:sequence>
<xsd:attribute name="OrderDate" type="xsd:date"/>
</xsd:complexType>
<xsd:complexType name="USAddress">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="city" type="xsd:string"/>
<xsd:element name="state" type="xsd:string"/>
<xsd:element name="zip" type="xsd:integer"/>
</xsd:sequence>
<xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/>
</xsd:complexType>
</xsd:schema>
<generateEpisode>false</generateEpisode>
确保在没有剧集文件的情况下生成代码。
我需要将插件的版本升级到2.5.0。在此版本中,generateEpisode
已弃用:
从插件版本 2.4 开始,将不再使用此参数。相反,默认情况下会使用所有 JAXB 操作生成剧集文件。
从插件版本 2.4 开始,使用参数 episodeFileName 提供生成的剧集文件的自定义名称(或依赖于标准文件名 STANDARD_EPISODE_FILENAME)。
只需将 2.5.0 更改version
为以下构建时错误:
引起:java.io.FileNotFoundException: C:\path-to-the-project\target\generated-sources\jaxb\META-INF\JAXB\episode_xjc.xjb
通过切换generateEpisode
到true
构建是成功的,但是代码是使用剧集文件生成的,我想避免这种情况。(作为旁注,这证明generateEpisode
了事实上并没有被忽略,尽管文档说了什么)。
如果可能的话,如何禁用插件版本2.5.0的剧集文件的生成?