【发布时间】:2017-09-11 10:28:42
【问题描述】:
我一直在用 maven 插件执行顺序和生成的类的打包来敲我的脑袋。
我需要从带有注释的 XSD 生成 pojo,为此我使用的是 maven-jaxb2-plugin,它使用 binding.xjb(一个包含完全分类的字段名称的 xml 文件将被注释)文件并为生成的pojo添加注释。除此之外,我还有一种机制可以从映射文件动态生成 binding.xjb 文件,其目的只是提供 yaml 文件格式的映射,而不是拥有一个大的 binding.xjb 因为维护 yml 文件很容易,为此我有一个独立的 spring boot 应用程序,它读取 yaml 文件并生成 binding.xjb 文件,我正在使用 exec-maven-plugin 来在 maven-jaxb2-plugin 之前调用我的应用程序,以便预先生成 binding.xjb 并供 maven-jaxb2-plugin 用于注释 pojo。
而且我知道,为了维护插件执行顺序,它们必须在同一阶段声明,以避免麻烦我正在使用 process-classes 阶段,并在此帮助下生成 pojo带注释。
但问题是生成的类没有打包到 jar 中,我也想从生成的 jar 文件中排除我的 binding.xjb 生成逻辑。
我的构建配置如下所示:-
<build>
<defaultGoal>install</defaultGoal>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.abc.GeneratorApp</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>${maven-jaxb2-plugin.version}</version>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<extension>true</extension>
<args>
<arg>-XautoNameResolution</arg>
<arg>-Xannotate</arg>
</args>
<schemas>
<schema>
<fileset>
<directory>src/main/xsd</directory>
<includes>
<include>PATH-TO-XSD/my.xsd</include>
</includes>
</fileset>
</schema>
</schemas>
<bindings>
<binding>
<fileset>
<directory>src/main/xsd</directory>
<includes>
<include>*.xjb</include>
</includes>
</fileset>
</binding>
</bindings>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>0.6.4</version>
</plugin>
<plugin>
<groupId>com.abc.xyz</groupId>
<artifactId>my-api</artifactId>
<version>1.2.3</version>
</plugin>
</plugins>
</configuration>
</plugin>
</plugins>
谁能指出我正在犯的错误或提供解决此问题的建议,在此先感谢。
【问题讨论】:
标签: jaxb maven-3 xjc maven-jaxb2-plugin exec-maven-plugin