ant replaceregexp任务中的输出替换摘要

时间:2013-02-07 18:51:52

标签: regex ant replace summary

在ant summary="true"任务中是否存在replaceregexp等效项,就像简单的ant replace任务一样?

这是我的用例。我正在用replaceregexp任务替换ant替换任务,如下所示:

<replace dir="${dir}" summary="true" value="" token="Some Text">
    <include name="**/*.jsp" />
</replace>

成为这个:

<replaceregexp byline="true">
    <regexp pattern="Some\s*Text"/>
    <substitution expression=""/>
 <fileset dir="${dir}" includes="**/*.jsp"/>
</replaceregexp>

但是,我无法找到一种方法让我的ant构建输出已经完成的替换次数。 summary没有replaceregexp属性,文档也没有提供任何现成的建议。这可能吗?

1 个答案:

答案 0 :(得分:2)

从阅读ReplaceRegexp任务的来源,没有这样的功能 ant184 =&gt; src / main / org / apache / tools / ant / taskdefs / optional / ReplaceRegExp.java,第351行:

protected void doReplace(File f, int options) throws IOException {
        File temp = FILE_UTILS.createTempFile("replace", ".txt", null, true, true);

        Reader r = null;
        Writer w = null;
        BufferedWriter bw = null;

        try {
            if (encoding == null) {
                r = new FileReader(f);
                w = new FileWriter(temp);
            } else {
                r = new InputStreamReader(new FileInputStream(f), encoding);
                w = new OutputStreamWriter(new FileOutputStream(temp),
                                           encoding);
            }

            BufferedReader br = new BufferedReader(r);
            bw = new BufferedWriter(w);

            boolean changes = false;

            log("Replacing pattern '" + regex.getPattern(getProject())
                + "' with '" + subs.getExpression(getProject())
                + "' in '" + f.getPath() + "'" + (byline ? " by line" : "")
                + (flags.length() > 0 ? " with flags: '" + flags + "'" : "")
                + ".", Project.MSG_VERBOSE);

表示使用loglevel verbose记录替换:
ant -verbose -f yourfile.xml

ant -v -f yourfile.xml

获取ant source distribution file并简单地扩展任务doReplace()方法以获得所需的输出,例如,替换的计数器,由新任务属性'summary'控制false | true
您可以填写enhancement report并提交补丁,以便在下一个ant版本中为其他用户提供,更多详情here