使用resourcecount获取属性中的行数

时间:2012-07-21 19:58:29

标签: java ant

我正在尝试使用ANT-Buildscript来计算存储在ANT属性中的行。从示例中我得到了计算文件中行的方法,如下所示:

<resourcecount count="0" when="eq">
    <tokens>
        <concat>
            <filterchain>
                <tokenfilter>
                    <linetokenizer/>
                </tokenfilter>
            </filterchain>
            <fileset file="${file}" />
        </concat>
    </tokens>
</resourcecount>

现在我想引用一个ANT属性而不是文件。有没有办法做到这一点?我知道使用<echo file="${temp.file}">${the.property.with.many.lines}</echo>并使用上面的代码将属性的内容写入文件的解决方案。但我想知道是否有一个没有临时文件的解决方案。

1 个答案:

答案 0 :(得分:5)

可以使用propertyresource元素代替fileset,如下所示:

<property name="lines"
    value="line01${line.separator}line02${line.separator}line03"/>

<target name="count-lines">
  <resourcecount property="line.count" count="0" when="eq">
    <tokens>
      <concat>
        <filterchain>
          <tokenfilter>
            <stringtokenizer delims="${line.separator}" />
          </tokenfilter>
        </filterchain>
        <propertyresource name="lines" />
      </concat>
    </tokens>
  </resourcecount>
  <echo message="${line.count}" />
</target>

输出

  

计数行:        [echo] 3

     

建立成功   总时间:0秒