2

ANT 可以更改 XML 文件中的值吗?

我正在研究 Java、Spring 系统,并且在 XML 文件中,我们有服务器名称、用户名、密码之类的东西,对于我们正在推广系统的每个环境都必须更改。我想让 ANT 脚本询问 SA 的服务器名称、用户名,然后替换 xml 文件中的值。

4

4 回答 4

3

我曾经有像 @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 和生产的单独配置文件。

于 2012-05-04T12:56:54.093 回答
2

查看Ant 替换任务以进行字符串替换,只需为您的占位符选择合适的字符串。

输入任务可用于收集所需的值。

于 2012-05-04T12:55:47.653 回答
1

您还可以考虑从 PropertyPlaceholderConfigurator 加载 Spring xml 文件中的属性。然后,您可以将您的属性保存在标准的 Java .properties 文件中,并在通过层级推广您的项目时根据需要进行编辑。这里有一个不错的例子:example

于 2012-05-04T13:19:04.580 回答
0

您可以使用 Guillaume Polet 评论所指示的蚂蚁过滤器。我也遵循了同样的方法,它解决了我的问题。有关详细信息,请参阅https://ant.apache.org/manual/Tasks/filter.html

于 2015-01-13T08:50:01.840 回答