Как подойти к нескольким операциям с динамически расположенным файлом? - PullRequest
1 голос
/ 31 мая 2011

Я пытаюсь построить следующее в ant, но, честно говоря, не знаю, как лучше поступить:

  • Получить имя файла на основе заданных критериев (самое новое по дате и сравнению строки регулярного выражения) иРазбить имя файла на части (файл начинается с номера, который я буду использовать для проверки действительности).
  • Получить имя папки в другом каталоге и разбить на части, чтобы получить номер файла копии, если проверочный номер файла больше номера папки.

Пока что я могу скопировать правильный файл во временный каталог, но мне нужна помощь в сравнении частей имени файла и имени папки.

1 Ответ

0 голосов
/ 31 мая 2011

Получил работу с:

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

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

    <target name="check_if_new_sdk_needed" depends="check_local_sdk, compute_remote_sdk_properties">
        <echo message="Need to grab SDK: ${updateNeeded}" />
        <antcall target="process_sdk" />
    </target>

    <target name="check_local_sdk" depends="local_sdk_found, local_sdk_not_found">
    </target>

    <target name="local_sdk_found" depends="compute_local_sdk_properties" if="local.sdk.found">
        <echo message="Local SDK found" />
        <script language="javascript"><![CDATA[
          var localVersion = parseInt(project.getProperty('local.sdk.version.number'));
          var remoteVersion = parseInt(project.getProperty('remote.sdk.version.number'));
          project.setProperty('updateNeeded', remoteVersion > localVersion);
      ]]></script>
    </target>

    <target name="local_sdk_not_found" depends="compute_local_sdk_properties" unless="local.sdk.found">
        <property name="updateNeeded" value="true" />
        <echo message="Need to grab SDK" />
    </target>

    <target name="compute_local_sdk_properties">
        <path id="local_sdk_folder_name">
            <dirset dir="${local.sdk.dir}">
                <include name="*"/>
            </dirset>
        </path>
        <property name="local.sdk.folder.name" refid="local_sdk_folder_name"/>
        <pathconvert property="local.sdk.version.number">
            <path path="${local.sdk.folder.name}" />
            <chainedmapper>
                <flattenmapper />
                <mapper type="regexp" from="(.*?)-.*" to="\1" />
            </chainedmapper>
        </pathconvert>
        <condition property="local.sdk.found">
            <length string="${local.sdk.version.number}" trim="true" when="greater"
                length="0" />
        </condition>
    </target>

    <target name="compute_remote_sdk_properties">
        <echo message="renaming ${sdk_folder_name} to ${remote.sdk.file.name}"/>
        <pathconvert property="remote.sdk.version.number">
            <path path="${remote.sdk.file.name}" />
            <chainedmapper>
                <flattenmapper />
                <mapper type="regexp" from="(.*?)-.*" to="\1" />
            </chainedmapper>
        </pathconvert>
    </target>
</project>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...