Как вывести относительный путь с помощью Ant - PullRequest
3 голосов
/ 28 августа 2009

Я использую Ant и mxmlc для компиляции классов ActionScript и MXML в swfs, сохраняя при этом организацию по умолчанию для проекта Flex Builder (Flash Builder). Многие из моих классов ActionScript находятся в подкаталогах проекта, поэтому мой проект организован следующим образом:

MyBigProject
-build-imports.xml
-build.xml

-bin-debug
--src
---flash
---app
----CoolWidget1.swf
---Main.swf
--test

-src
--flash
---app
----build-imports.xml
----build.xml
----CoolWidget1.as
--build-imports.xml
--build.xml
--Main.mxml
-test

Эта структура каталогов поддерживает структуру каталогов по умолчанию в проекте Flash Builder, поэтому я могу выполнять сборку с помощью кнопок из IDE Flash Builder. Я добавил Ant build xml в этот проект, чтобы я мог также строить из командной строки. Я пытаюсь создать переносимые скрипты сборки ant, которые требуют минимальных изменений для повторного использования в других проектах. У меня есть все, что я хочу, кроме определения относительных путей.

Файл build-import.xml в корне проекта содержит следующее:

<project name="project.root.imports">
    <dirname property="project.root.dir" file="${ant.file.project.root.imports}"/>
</project>

В то время как папки подпроекта содержат build-import.xml со следующим:

<project name="MyBigProject.src.flash.app.imports">
    <import file="../build-imports.xml" />
</project>

Обратите внимание, что подпроект build-import.xml перемещается вверх по каталогу hiearchy до тех пор, пока не дойдет до корня build-imports.xml, и там я установил project.root.dir.

Затем я могу использовать $ {project.root.dir} / bin-debug, чтобы указать, куда поместить мои двоичные файлы. Единственная проблема, с которой я столкнулся, это то, что я не знаю, как создать ту же структуру каталогов, что и в моей папке src. Мне нужно иметь возможность вывести относительный путь или выполнить некоторые манипуляции со строками для создания новых каталогов.

Учитывая вышеизложенную информацию, как выбрать известный путь, например:
$ {Project.root.dir} / SRC / приложение
и получить путь к каталогу, например:
$ {Project.root.dir} / бен-отладки / приложение

Я нашел некоторую информацию о задаче Ant-contrib propertyregex, которая позволила бы манипулировать строками, но я надеюсь, что есть гуру Ant, который может указать на простое решение. Я верю, что это очень похоже на новичка муравья, я просто упускаю из виду очевидное.

1 Ответ

2 голосов
/ 28 августа 2009

Мои файлы сборки немного изменились с момента публикации, но я решил проблему. Я полагаю, что в базовой установке, описанной ранее, будет работать правильно:

Добавьте это к цели по умолчанию в build.xml

подпроекта.
<path id="build.path">
   <pathelement location="." />
</path>
<pathconvert property="build.dir" refid="build.path">
    <map from="${project.root.dir}" to="${project.root.dir}/bin-debug"/>
</pathconvert>
...