【发布时间】:2009-05-21 18:46:46
【问题描述】:
我正在尝试通过使用带有 ant 的配置文件来自定义我的构建。我打算做的是使用具有以下模式的配置文件: 文件路径、要匹配的模式、要替换的模式
我想要这样,我只需将内容添加到配置文件中,然后 ant 构建脚本读取这些值并进行所需的更改。
我已经知道如何在文件中进行正则表达式查找和替换。我正在寻找的是一种从这样的配置文件中读取值的方法。
【问题讨论】:
标签: ant build-automation
我正在尝试通过使用带有 ant 的配置文件来自定义我的构建。我打算做的是使用具有以下模式的配置文件: 文件路径、要匹配的模式、要替换的模式
我想要这样,我只需将内容添加到配置文件中,然后 ant 构建脚本读取这些值并进行所需的更改。
我已经知道如何在文件中进行正则表达式查找和替换。我正在寻找的是一种从这样的配置文件中读取值的方法。
【问题讨论】:
标签: ant build-automation
在 Ant 中有多种方法可以从文件中读取信息。
通用的是LoadFile Ant Task。不过我会推荐loadProperties Task。您可以使用此任务来读取属性,例如: toReplace=string_to_replace with=replacement_string,然后在您的正则表达式中使用属性“toReplace”和“with”。
【讨论】:
如果我理解正确的话,你想为各种环境生成一组配置文件。
我目前使用的解决方案是由 Ant 任务调用的 Groovy 脚本。由于 Ant 不允许您重新定义已设置的属性,因此使用它来生成具有不同值的多个文件是相当棘手的。
如果你想探索这个,只需看看Groovy,尤其是Template Engine。
【讨论】:
我会在 ant 中使用 filterset 功能。您可以使用模式@replace_me@ 创建带有要替换的字符串的配置文件的参数化版本。然后定义一个属性文件来定义替换值。你可以
<copy toDir="${dist.dir}/docs">
<fileset file="config.xml"/>
<filterset>
<filtersfile file="path/to.properties"/>
</filterset>
</copy>
那么属性文件就是 name=value 行。
您在指定文件集和过滤器集方面有很大的灵活性,请参阅 Ant 文档了解这些内容。
【讨论】: