gpt4 book ai didi

java - 在 ant 中写出文件路径属性的问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:28:23 25 4
gpt4 key购买 nike

我在将保存目录路径值的属性写入属性文件时遇到问题。

我的脚本最初使用 <property file="source.props"/> 从 props 文件中读取这个特定属性,将其称为“appserver.home” .我回应了传入的值,它正确读取为 C:\\somedir\\jboss_4_2_3。

我的脚本接下来需要做的是将此值提供给另一个属性文件(由另一个 ant 脚本使用——尽管这并不重要)。为了创建这个其他文件,我使用了一种带有由 $....$ 包围的占位符的模板文件,以在正确的位置插入正确的值,使用以下内容:-

 <copy file="template_file.props" tofile="target.props">
<filterset begintoken="$" endtoken="$">
<filter token="appServerDir" value="${appserver.home}"/>
<filter token="dbusername" value="${database.name}"/>
....
</filterset>
</copy>

问题是现在 target.props 中的值是 C:\somedir\jboss_4_2_3 即它丢失了转义字符。当下一个 ant 脚本使用此文件时,它将属性值解释为 C:somedirjboss_4_2_3

所以问题是我如何告诉 Ant 我正在写的值是一个文件路径?请注意,我尝试了以下方法,它确实有效:-

<propertyfile file="target.props">
<entry key="appServerDir" value="${appserver.home}"/>
</propertyfile>

.. 即它输出名称为 c\:\\somedir\\jboss4_2_3,但我宁愿不使用这种技术,而是使用模板文件技术,因为它包含一些属性始终是静态的,以及评论等。

提前致谢

最佳答案

在此处处理转义方面,任务之间可能存在一些令人困惑的差异。

当您说“appserver.home”正确回显时,我猜您使用的是“echoproperties”任务,该任务向您显示存储的值而没有插值转义。这显示了与“source.props”文件中相同的转义数。

问题是,一般来说,当 Ant 将此值插入到字符串中时,它会消耗转义符,因此它们会消失。一个异常(exception)是在“propertyfile”任务中,您通常希望在输出属性文件中保留转义符 - 正如您所观察到的 - 以便以后可以正确读取文件。

那么,怎么办?

也许最简单的事情是确保从“source.props”中读取的属性保留它们的转义符以供以后的过滤器使用。所以不用

<property file="source.props"/>

加载、使用

<loadproperties srcfile="source.props">
<filterchain>
<replacestring from="\" to="\\" />
</filterchain>
</loadproperties>

这应该确保您的转义序列传播。

关于java - 在 ant 中写出文件路径属性的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3360413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com