读取Ant中的属性值

时间:2008-12-04 21:59:06

标签: java ant

我需要从Ant脚本中的文件中读取属性的值,并删除前几个字符。有问题的财产是

path=file:C:/tmp/templates

此属性存储在我可以通过

在ant脚本中访问的文件中
<property file="${web.inf.dir}/config.properties"/>

我有两个问题:

  1. 如何从加载的属性文件中读取单个'path'属性?
  2. 如何从属性值中删除前导'file:'?
  3. 最终,我想在Ant脚本中访问以下名称 - 值对:

    path=C:/tmp/templates
    

    干杯, 唐

4 个答案:

答案 0 :(得分:3)

在Ant 1.6或更高版本中,您可以将LoadProperties与嵌套FilterChain

一起使用
<loadproperties srcFile="${property.file.name}">
  <filterchain>
    <tokenfilter>
      <containsstring contains="path=file:"/>
      <replaceregex pattern="path=file:" replace="path=" flags=""/>
    </tokenfilter>
  </filterchain>
</loadproperties>

这会导致path属性被加载字符串“file:”被剥离。

未经过测试,请注意......

答案 1 :(得分:3)

如何更改属性文件以便访问完整路径和简单路径?

path=C:/tmp/templates
fullpath=file:${path}

答案 2 :(得分:2)

我使用propertyregex task中的Ant Contrib做了类似的事情。

答案 3 :(得分:0)

您可以使用ant的exec任务和系统命令。

我快速写下来测试这个概念:

<target name="foo">
  <property name="my.property" value="file:C:/foo/bar"/>
  <exec executable="/bin/cut" inputstring="${my.property}" outputproperty="new.property">
    <arg line="-d':' -f2-"/>
  </exec>
  <echo message="FOO: ${new.property}"/>
</target>

不幸的是,只有在可以使用/ bin / cut或可以使用某种可执行文件的系统上构建时,这才有效。