升级jaxb2-maven-plugin到2.5版本时staleFile标签不被允许如何解决
jaxb2-maven-plugin 2.x版本staleFile标签报错解决方案
staleFile是jaxb2-maven-plugin 1.x版本的配置项,从2.0版本开始官方已经移除了该配置,IntelliJ的pom.xml schema校验检测到不支持的标签才会抛出「Element staleFile is not allowed here」的错误提示。命令行构建正常是因为Maven对插件配置中未知的标签会直接忽略,不会打断构建流程,但这个配置实际在2.x版本中已经不生效了。
方案1(推荐):直接删除staleFile配置
2.x版本的jaxb2-maven-plugin已经内置了增量构建校验逻辑,会自动识别xsd文件变更来决定是否需要重新生成代码,不需要手动指定stale标记文件,直接删掉配置中的<staleFile>标签即可,不会影响原有构建逻辑,同时也会消除IntelliJ的错误提示。
修改后的配置示例:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxb2-maven-plugin</artifactId> <version>2.5.0</version> <configuration> <clearOutputDir>false</clearOutputDir> <extension>true</extension> </configuration> <executions> <execution> <id>company-binding-directAuthorizeReq</id> <goals> <goal>xjc</goal> </goals> <configuration> <sources> <source>${company.schema.location}/directAuthorizeReq.xsd</source> </sources> <outputDirectory>${generated.source.location}</outputDirectory> <packageName>${company.model.package}.directAuthorizeReq</packageName> </configuration> </execution> </executions> </plugin>
方案2:自定义stale标记逻辑(仅特殊场景需要)
如果你确实需要保留自定义的构建状态标记逻辑,可以使用build-helper-maven-plugin等工具手动实现标记文件的生成和校验逻辑,常规业务场景下无需使用该方案。
内容的提问来源于stack exchange,提问作者Jane Hayes
相关产品推荐
相关产品推荐

