代码之家  ›  专栏  ›  技术社区  ›  Dónal

读取Ant中的属性值

  •  2
  • Dónal  · 技术社区  · 16 年前

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

    path=file:C:/tmp/templates
    

    此属性存储在一个文件中,我可以通过

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

    我有两个问题:

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

    最后,我想访问Ant脚本中的以下名称-值对:

    path=C:/tmp/templates
    

    干杯, 唐

    4 回复  |  直到 15 年前
        1
  •  2
  •   Dan Dyer    16 年前

    我用过 propertyregex task Ant Contrib 做类似的事情。

        2
  •  3
  •   Ken Gentle    16 年前

    在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:”加载的属性被删除。

    没有测试,空虚警告…

        3
  •  3
  •   Brian Kelly    15 年前

    只需更改属性文件就可以访问完整路径和简单路径如何?

    path=C:/tmp/templates
    fullpath=file:${path}
    
        4
  •  0
  •   Rob Hruska MegalomanINA    16 年前

    您可以使用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或某种您可以使用的可执行文件的系统上构建时,这才有效。