скопировать файл изнутри каталога в списке файлов - PullRequest
0 голосов
/ 27 марта 2012

У меня есть filelist, который содержит список каталогов. Мне нужно перебрать этот filelist, получить файл из каждого каталога и скопировать его в другое место.

Я пытался использовать filelist в сочетании с foreach, но foreach не поддерживает filelist. Есть ли другой способ сделать это в ANT?


Моя попытка с for.

Ошибка при выполнении задачи <copy> о том, что она не может найти каталог. Каталог, который он ищет, это ${basedir}/bin/ вместо каталога, который впервые указан в filelist, который ему дан. Я предполагаю, что это потому, что он неправильно читает мой filelist. Моя foreach версия выдает ту же ошибку.

    <for 
        list="devBuild"
        delimiter=","
        param="dirName"
        trim="true">
        <sequential>
            <copy
                todir="./apks/"
                failonerror="true"
                verbose="true">
                <fileset dir="@{dirName}/../bin/">
                    <include name="*/*.apk"/>
                </fileset>
            </copy>
        </sequential>
    </for>

Частично работает

Прямо сейчас, цикл for работает ... вроде. То, как я хочу, чтобы это работало, показано ниже. Тем не менее, это не означает, что ссылка devBuild не найдена. Однако этот filelist создан ранее в другом target и создан с этой ссылкой. Почему я не могу использовать этот ссылочный идентификатор в другой цели?

    <for
        delimiter=","
        param="dirName"
        trim="true">
        <path>
            <filelist
                refid="devBuild"></filelist>
        </path>
        <sequential>
            <echo>@{dirName}</echo>
            <copy
                todir="./apks/"
                failonerror="true"
                verbose="true">
                <fileset dir="@{dirName}/../bin/">
                    <include name="*/*.apk"/>
                </fileset>
            </copy>
        </sequential>
    </for>

Следующий способ работает, но я хотел бы использовать ссылочный идентификатор вместо создания filelist снова.

    <for
        delimiter=","
        param="dirName"
        trim="true">
        <path>
            <filelist
                id="devBuild"
                dir="${basedir}"
                files="${build1},${build2},${build3},${build4}"
            />
        </path>
        <sequential>
            <echo>@{dirName}</echo>
            <copy
                todir="./apks/"
                failonerror="true"
                verbose="true">
                <fileset dir="@{dirName}/../bin/">
                    <include name="*/*.apk"/>
                </fileset>
            </copy>
        </sequential>
    </for>

1 Ответ

1 голос
/ 27 марта 2012

Я разобрался в проблеме. Когда я звонил этому другому target, я не устанавливал флаг для inheritrefs. Это должно быть правдой, поэтому другие target получат ссылки.

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