如何在jaxb2 maven插件版本2.5.0中排除事件文件的生成?
我使用的目标是从一组xsd文件生成Java类 一个最小的、完整的和可验证的示例是一个Maven项目,其中包含以下pom.xml文件:如何在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
<?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阶段,以便在代码生成之后直接执行