получить доступ к значению свойства ant для переменной шаблона в file.eachFileMatch () в Groovy - PullRequest
3 голосов
/ 30 января 2012

Я не могу запустить код для перемещения файла, когда я использую атрибут ant macrodef в groovy task внутри macrodef.

<macrodef name="dirmove">
            <attribute name="todir" />
            <attribute name="fromdir" />
            <attribute name="includes" default="*" />
            <sequential>
                <var name="todir" value="@{todir}" />
                <var name="fromdir" value="@{fromdir}" />
                <var name="includes" value="@{includes}" />
                <groovy>
                File dir1 = new File(properties.'fromdir');
                File dir2 = new File(properties.'todir');  
                def pattern = properties.get('includes')
                println pattern;
                dir1.eachFileMatch  ~/pattern/, { 
                    f-> 
                    boolean fileMoved = f.renameTo(new File(dir2, f.getName()));
                    //assert f.name == '1.txt' //**because File object is immutable, so I am just checking for the existing of previous file name. It is still there.
                    println fileMoved;
                }
            </groovy>
        </sequential>
    </macrodef>

Этот код правильно печатает значение шаблона, которое исходит из значения атрибута.Но функция eachFileMatch не получает спецификацию

1 Ответ

0 голосов
/ 30 января 2012
            dir1.eachFileMatch  ~/pattern/, { 

должно быть

            dir1.eachFileMatch  ~/${pattern}/, { 

Поскольку шаблон является строковой переменной, вам необходимо добавить его в шаблон регулярного выражения как таковой.

Ранее вы просто искали все файлы с именем pattern

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...