ANT 可以更改 XML 文件中的值吗?
我正在研究 Java、Spring 系统,并且在 XML 文件中,我们有服务器名称、用户名、密码之类的东西,对于我们正在推广系统的每个环境都必须更改。我想让 ANT 脚本询问 SA 的服务器名称、用户名,然后替换 xml 文件中的值。
我曾经有像 @someProperty@ 这样的占位符并进行直接搜索和替换,但您可以使用XmlTask 。我们使用它来更改 EAR 的上下文根 - 由于 XML 命名空间废话,它不是很漂亮:
<xmltask source="META-INF/application.xml" report="true" failwithoutmatch="true" dest="META-INF/application.xml">
<replace path="//*[local-name()='application']//*[local-name()='module'][@id='WebModule_XXXX']//*[local-name()='web']//*[local-name()='context-root']/text()" withText="${contextRoot}"/>
</xmltask>
但是要更改您想要的内容,我们现在使用 Spring 3.1 配置文件,我们所做的就是在属性文件中切换环境配置文件。我们有用于开发、自动化 uat、qa 和生产的单独配置文件。
您还可以考虑从 PropertyPlaceholderConfigurator 加载 Spring xml 文件中的属性。然后,您可以将您的属性保存在标准的 Java .properties 文件中,并在通过层级推广您的项目时根据需要进行编辑。这里有一个不错的例子:example
您可以使用 Guillaume Polet 评论所指示的蚂蚁过滤器。我也遵循了同样的方法,它解决了我的问题。有关详细信息,请参阅https://ant.apache.org/manual/Tasks/filter.html。