2

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

path=file:C:/tmp/templates

此属性存储在一个文件中,我可以通过 ant 脚本访问该文件

<property file="${web.inf.dir}/config.properties"/>

我有两个问题:

  1. 如何从加载的属性文件中读取单个“路径”属性?
  2. 如何从属性值中删除前导“文件:”?

最终,我希望能够访问 Ant 脚本中的以下名称-值对:

path=C:/tmp/templates

干杯,唐

4

4 回答 4

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:”被剥离。

未经测试,请自告奋勇...

于 2008-12-04T23:10:09.513 回答
3

只是更改属性文件,以便您可以访问完整路径和简单路径,怎么样?

path=C:/tmp/templates
fullpath=file:${path}
于 2009-09-24T13:43:17.597 回答
2

我使用 Ant Contrib 的propertyregex任务来做类似的事情。

于 2008-12-04T22:09:34.750 回答
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 或您可以使用的某种可执行文件在系统上构建时才有效。

于 2008-12-04T22:12:29.050 回答