如何在jaxb2-maven-plugin 2.5.0版本中排除情节文件的生成?

Magnilex

我使用jaxb2-maven-pluginxjc目标从一组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)。

只需将更version改为2.5.0,就会出现以下构建时错误:

引起原因:java.io.FileNotFoundException:C:\\-项目路径\目标\生成的源\ JAXB \ META-INF \ JAXB \ episode_xjc.xjb

通过切换generateEpisodetrue构建成功,但是代码是用情节文件生成的,我想避免这种情况。(作为附带说明,generateEpisode尽管文档中有说明,但这实际上并没有被忽略)。

如果有可能,如何使用插件的2.5.0版禁用情节文件的生成

Magnilex

经过研究,我得出的结论是该功能不再存在。

但是,我发现了排除情节文件的两种解决方法:

使用JAXB2 Maven插件(maven-jaxb2-plugin)代替jaxb2-maven-plugin

JAXB2 Maven插件是一个类似的插件,它仍然支持不带情节文件的生成:

<build>
  <plugins>
    <plugin>
      <groupId>org.jvnet.jaxb2.maven2</groupId>
      <artifactId>maven-jaxb2-plugin</artifactId>
      <version>0.14.0</version>
      <executions>
        <execution>
          <id>xjc</id>
          <goals>
            <goal>generate</goal>
          </goals>
          <configuration>
            <schemaDirectory>${project.basedir}/src/main/resources/</schemaDirectory>
            <episode>false</episode> <!-- skips episode file generation -->
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

使用单独的插件删除文件

在原始插件之后,可以使用Apache Maven AntRun插件删除文件:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>3.0.0</version>
  <executions>
    <execution>
      <phase>generate-sources</phase>
      <goals>
        <goal>run</goal>
      </goals>
      <configuration>
        <target>
          <delete>
            <fileset dir="${project.build.directory}/generated-sources/jaxb/META-INF/JAXB" includes="episode*.xjb" />
          </delete>
        </target>
      </configuration>
    </execution>
  </executions>
</plugin>

这需要挂接到generate-sources阶段,以便在代码生成后直接执行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Maven JAXB2 插件无法处理绑定文件

来自分类Dev

maven-jaxb2-plugin(Maven)生成的日期和时间

来自分类Dev

maven-jaxb2-plugin(Maven)生成的日期和时间

来自分类Dev

从xsd生成maven-jaxb2-plugin类(版本错误)

来自分类Dev

不是使用Maven-jaxb2-plugin从xsd生成类的?

来自分类Dev

如何为JAXB2 Maven插件指定javax.xml.accessExternalSchema

来自分类Dev

maven-jaxb2-plugin VS jaxb2-maven-plugin用于多个模式

来自分类Dev

如何从maven-jar-plugin的jar中排除Java文件?

来自分类Dev

JAXB2源代码生成

来自分类Dev

jaxb2-maven-plugin将类路径添加到生成的源

来自分类Dev

jaxb2-maven-plugin为默认值= INF的double生成无效的源

来自分类Dev

jaxb2-maven-plugin为默认值= INF的double生成无效的源

来自分类Dev

jaxb2-maven-plugin与JUnit4的集成

来自分类Dev

XJC Maven插件(JAXB2 - Maven的插件)的Java 11个迁移问题

来自分类Dev

v0.12.0之后,使用maven-jaxb2-plugin生成代码不适用于相同的配置

来自分类Dev

如何在Maven中指定avro-mapred的hadoop2版本?

来自分类Dev

如何在axis2-java2wsdl-maven-plugin中指定地址位置?

来自分类Dev

如何通过 swagger-codegen-maven-plugin 在 pom 中生成 maven-jar-plugin 3.1.2 版本

来自分类Dev

Maven和m2e-Eclipse-Plugin如何合作

来自分类Dev

Maven和m2e-Eclipse-Plugin如何合作

来自分类Dev

如何强制Maven使用maven-install-plugin 2.5版?

来自分类Dev

如何配置axis2-java2wsdl-maven-plugin使用多个类来生成一个wsdl?

来自分类Dev

使用M2Eclipse插件以交互模式设置带有versions-maven-plugin的版本?

来自分类Dev

带有jdk8和maven-jaxb2-plugin的SAXParseException

来自分类Dev

jaxb2-maven-plugin只执行第一次执行

来自分类Dev

将XJB与jaxb2-maven-plugin一起使用

来自分类Dev

jaxb2-maven-plugin:schemagen是否可与JDK8一起使用?

来自分类Dev

org.codehaus.mojo:jaxb2-maven-plugin 2.0在哪里?

来自分类Dev

jaxb2-maven-plugin:schemagen是否可以与JDK8一起使用?

Related 相关文章

  1. 1

    Maven JAXB2 插件无法处理绑定文件

  2. 2

    maven-jaxb2-plugin(Maven)生成的日期和时间

  3. 3

    maven-jaxb2-plugin(Maven)生成的日期和时间

  4. 4

    从xsd生成maven-jaxb2-plugin类(版本错误)

  5. 5

    不是使用Maven-jaxb2-plugin从xsd生成类的?

  6. 6

    如何为JAXB2 Maven插件指定javax.xml.accessExternalSchema

  7. 7

    maven-jaxb2-plugin VS jaxb2-maven-plugin用于多个模式

  8. 8

    如何从maven-jar-plugin的jar中排除Java文件?

  9. 9

    JAXB2源代码生成

  10. 10

    jaxb2-maven-plugin将类路径添加到生成的源

  11. 11

    jaxb2-maven-plugin为默认值= INF的double生成无效的源

  12. 12

    jaxb2-maven-plugin为默认值= INF的double生成无效的源

  13. 13

    jaxb2-maven-plugin与JUnit4的集成

  14. 14

    XJC Maven插件(JAXB2 - Maven的插件)的Java 11个迁移问题

  15. 15

    v0.12.0之后,使用maven-jaxb2-plugin生成代码不适用于相同的配置

  16. 16

    如何在Maven中指定avro-mapred的hadoop2版本?

  17. 17

    如何在axis2-java2wsdl-maven-plugin中指定地址位置?

  18. 18

    如何通过 swagger-codegen-maven-plugin 在 pom 中生成 maven-jar-plugin 3.1.2 版本

  19. 19

    Maven和m2e-Eclipse-Plugin如何合作

  20. 20

    Maven和m2e-Eclipse-Plugin如何合作

  21. 21

    如何强制Maven使用maven-install-plugin 2.5版?

  22. 22

    如何配置axis2-java2wsdl-maven-plugin使用多个类来生成一个wsdl?

  23. 23

    使用M2Eclipse插件以交互模式设置带有versions-maven-plugin的版本?

  24. 24

    带有jdk8和maven-jaxb2-plugin的SAXParseException

  25. 25

    jaxb2-maven-plugin只执行第一次执行

  26. 26

    将XJB与jaxb2-maven-plugin一起使用

  27. 27

    jaxb2-maven-plugin:schemagen是否可与JDK8一起使用?

  28. 28

    org.codehaus.mojo:jaxb2-maven-plugin 2.0在哪里?

  29. 29

    jaxb2-maven-plugin:schemagen是否可以与JDK8一起使用?

热门标签

归档