如何在Maven过滤后验证XML?

时间:2015-12-09 08:47:39

标签: java xml validation maven maven-3

假设我有一个简单的XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<root property="${my.custom.maven.property}"/>

因为my.custom.maven.property是通过Maven插件获得的,所以我无法修改其值并且它是非转义的UTF-8字符串,因此它可能(并且确实)包含特殊字符,如{{ 1}}。这会在打包或编译阶段后导致错误(主要是在已部署的服务器上......)。我希望通过XML验证来防止这种情况。

这里的重点是我正在使用"。这不会有帮助,因为我无法指定此验证应在过滤后完成(好吧,这里的过滤意味着注入那些Maven属性值)。插件配置看起来很简单:

xml-maven-plugin:validate

1 个答案:

答案 0 :(得分:1)

Maven属性注入由Resources Plugin处理,它与process-resources阶段绑定by default,而XML Maven插件验证目标与{default绑定here 1}}阶段,在构建过程中可能为时已晚。

您可以在Maven生命周期的早期移动XML验证,并在属性注入将其绑定到test阶段后立即应用它:

process-resources

请注意其他<executions> <execution> <phase>process-resources</phase> <goals> <goal>validate</goal> </goals> </execution> </executions> 元素 因此,Maven会注入然后验证XML,并且您的构建将在更早的时候失败(如果需要)。

有关阶段及其顺序的完整列表,请查看官方Maven文档Register

注意:如果你要使用它,一些Eclipse(m2e)版本可能不喜欢不同的相位绑定,只要命令行构建工作正常(始终信任命令行构建),就可以忽略此错误。 / p>