Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在jaxb2 maven插件版本2.5.0中排除事件文件的生成?_Maven_Xjc_Jaxb2 Maven Plugin_Jaxb Episode - Fatal编程技术网

如何在jaxb2 maven插件版本2.5.0中排除事件文件的生成?

如何在jaxb2 maven插件版本2.5.0中排除事件文件的生成?,maven,xjc,jaxb2-maven-plugin,jaxb-episode,Maven,Xjc,Jaxb2 Maven Plugin,Jaxb Episode,我使用的目标是从一组xsd文件生成Java类 一个最小的、完整的和可验证的示例是一个Maven项目,其中包含以下pom.xml文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSch

我使用的目标是从一组xsd文件生成Java类

一个最小的、完整的和可验证的示例是一个Maven项目,其中包含以下pom.xml文件:

<?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/文件夹中,一个名为any valid xsd file的文件可以:

false确保生成的代码没有文件

我需要将插件的版本升级到。在此版本中,已弃用:

从插件版本2.4开始,将不使用此参数。相反,默认情况下,所有JAXB操作都会生成事件文件

从插件版本2.4开始,使用参数eposodefilename提供生成的插曲文件的自定义名称,或依赖标准文件名standard_插曲文件名

简单地将版本更改为2.5.0会产生以下生成时错误:

原因:java.io.FileNotFoundException:C:\path to the project\target\generated sources\jaxb\META-INF\jaxb\eposion\u xjc.xjb

通过将generateEpisode切换为true,构建是成功的,但是代码是使用一个事件文件生成的,我希望避免这样做。作为旁注,这证明了generateEpisode事实上并没有被忽略,不管文档怎么说


如果可能的话,我如何禁用插件版本2.5.0生成的插曲文件?

经过一些研究,我得出结论,该功能不再存在

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

<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>
使用而不是jaxb2 maven插件

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>
使用单独的插件删除文件

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

<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阶段,以便在代码生成之后直接执行。

经过一些研究,我得出结论,此功能不再存在

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

<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>
使用而不是jaxb2 maven插件

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>
使用单独的插件删除文件

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

<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>
这需要连接到GenerateSources阶段,以便在代码生成之后直接执行