Скопируйте новый файл с фильтром имени файла в Ant - PullRequest
3 голосов
/ 27 мая 2011

Я пытаюсь скопировать самый новый файл из каталога, используя Ant, в идеале мне бы тоже хотелось иметь фильтр по имени файла (например: '* file.java'), но я понятия не имею как это сделать

Я уже включил свой сценарий, но он не работает в JavaScript, и у меня недостаточно опыта, чтобы понять, почему.

<project name="test1" basedir=".">

    <property file="../local.properties" />
    <property file="../build.properties" />
    <property file="../default.properties" />

    <target name="init">        
        <copy todir=".">
            <fileset dir="/path/to/files">
                <scriptselector language="javascript">
                    var files = basedir.list();
                    var mostRecent = true;
                    for(var i = 0; i < files.size(); i++) {
                        mostRecent = mostRecent && (filename >= files[i]);
                    }
                    self.setSelected(mostRecent);
                </scriptselector>
            </fileset>
        </copy>
    </target>
</project>

edit: только что понял, что сайт, который я получил вышеупомянутым кодом JavaScript, утверждает, что этот селектор «выбирает только самый новый файл каталога, где каждый файл имеет метку времени в качестве имени файла», поэтому мой пример не будет работать, потому что он использует имя в качестве даты изменения. Это приводит к вопросу о том, как получить дату изменения файла в JavaScript (или любом другом языке, который работает с Ant)

1 Ответ

8 голосов
/ 27 мая 2011

Ответ был:

<target name="init">
     <copy todir="." flatten="true">
        <last>
            <sort>
                <date xmlns="antlib:org.apache.tools.ant.types.resources.comparators"/>
                <resources>
                    <fileset dir="/path/to/files/">
                        <include name="*sdk*" />
                    </fileset>
                </resources>
            </sort>
        </last>
    </copy>
</target>

редактировать: сначала поменял на последний и добавил фильтр

...