Я использую 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, который может указать на простое решение. Я верю, что это очень похоже на новичка муравья, я просто упускаю из виду очевидное.