Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   FLashdevelop + Ant + source-path (http://www.flasher.ru/forum/showthread.php?t=181889)

Samuel_D 05.07.2012 11:22

FLashdevelop + Ant + source-path
 
Ошибка : сборка происходит только если build.xml открыт в Flashdevelop и его вкладка активна, иначе ошибка : "Не удалось открыть "src"".

Что делаю :
Создаю новый большой проект под Flashdevelop + Ant. Для теста создал build.xml :

Код:

<project name="project" basedir="." default="build_app">       
       
        <property file="${user.home}\ant\project.properties"/>
        <taskdef resource="flexTasks.tasks" classpath="lib/flexTasks.jar"></taskdef>
        <property name="PROJECT_NAME" value="SOME_NAME"></property>
        <property name="APP_ROOT" value=""></property>
        <property name="SOURCE_DIR" value="${APP_ROOT}src\"></property>
        <property name="DEPLOY_DIR" value="${APP_ROOT}bin\"></property>
       
        <target name="loader">
                <mxmlc file="${SOURCE_DIR}Loader.as" output="${DEPLOY_DIR}\loader.swf" incremental="true">
                        <debug>false</debug>
                        <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"></load-config>
                        <source-path path-element="${FLEX_HOME}/frameworks"></source-path> 
                        <static-link-runtime-shared-libraries>true</static-link-runtime-shared-libraries>
                </mxmlc>
        </target>
       
</project>

И все было хорошо пока я не решил что пора разносить все по пакетам, для начала добавил новую переменную LOADER_DIR и прописал пакет в Loader.as -> package project.loader :

Код:

<project name="SOME_NAME" basedir="." default="build_app">       
       
        <property file="${user.home}\ant\project.properties"/>
        <taskdef resource="flexTasks.tasks" classpath="lib/flexTasks.jar"></taskdef>
        <property name="project" value="SOME_NAME"></property>
        <property name="APP_ROOT" value=""></property>
        <property name="SOURCE_DIR" value="${APP_ROOT}src"></property>
        <property name="LOADER_DIR" value="${SOURCE_DIR}\${PROJECT_NAME}\loader\"></property>
        <property name="DEPLOY_DIR" value="${APP_ROOT}bin\${PROJECT_NAME}\"></property>
       
        <target name="loader">
                <mxmlc file="${LOADER_DIR}Loader.as" output="${DEPLOY_DIR}\loader.swf" incremental="true">
                        <debug>false</debug>
                        <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"></load-config>
                        <source-path path-element="${FLEX_HOME}/frameworks"></source-path> 
                        <static-link-runtime-shared-libraries>true</static-link-runtime-shared-libraries>
                </mxmlc>
        </target>
       
</project>

Нарвался на ошибку :

Ошибка: Файл, найденный по исходному пути, должен иметь структуру пакета "", идентичную пакету определения "project.loader".

решил ее добавив в build.xml след. строку :
Код:

<source-path path-element="${SOURCE_DIR}"></source-path>
теперь все хорошо работает, но при условии что в Flashdevelop открыт build.xml для редактирования и обязательно закладка с кодом build.xml должна быть активной, иначе ошибка :
Не удалось открыть "src"

Кто знает в чем проблема ? А то совсем не по приколу перед каждой компиляцией открывать закладку с build.xml а потом назад к коду.

P.S. Flashdevelop 4.0.4 + Apache Ant 1.8.4 + Ant plugin for FD4

Котяра 05.07.2012 13:26

Когда вызываешь Test Project в FD из кода ты не вызываешь сборку антом - сборка идёт по дефолтным настройкам FD. Копай в ту сторону.

Samuel_D 05.07.2012 13:38

Котяра, спасибо, но проблема не в этом. Я сборку выполняю через Ant plugin for FD4 а не через FD, т.е. в панели Ant выбираю нужный target и вызываю "Run target".

P.S. прошу прощение, но как оказалось все намного глубже и по своей оплошности я не обратил внимание что эта проблема была всегда. Я начал с нуля и увидел что проблема не в пакетах, а в чем-то другом.
Вот новый build.xml - ничего сложного, но и он не хочет работать как надо, может это проблема плагина ? есть кто-то кто работает с Ant plugin for FD4 ? или всетаки я чего-то не дописал в build.xml.
Код:

<?xml version="1.0" encoding="UTF-8"?>
<project name="compile-and-reduce" default="default" basedir="../">
        <condition property="exe" value=".exe">
                <os family="windows"/>
        </condition>
        <condition property="exe" value="">
                <os family="unix"/>
        </condition>
       
        <property name="dir.build" value="${basedir}/build"/>
        <property file="${user.home}/ant/build.properties"/>
        <property name="dir.src" value="${basedir}/src"/>
        <property name="dir.bin" value="${basedir}/bin"/>
       
        <property name="file.swf" value="test.swf"/>
        <property name="file.main" value="Main.as"/>
       
    <target name="compile">
            <exec executable="${flex.mxmlc}">
                        <arg line="-define=CONFIG::Debug,false"/>
                        <arg line="-define+=CONFIG::Release,true"/>
                        <arg line="-strict"/>
                        <arg line="-optimize"/>
                        <arg line="-debug=false"/>
                        <arg line="-static-link-runtime-shared-libraries"/>
                        <arg line="-o '${dir.bin}/${file.swf}'"/>
                        <arg line="-el '${flex.libs}/player/10.0/playerglobal.swc'"/>
                        <arg line="-sp '${dir.src}'"/>
                        <arg line="-- '${dir.src}/${file.main}.as'"/>
                </exec>
        </target>
       
</project>

Добавлено через 29 минут
Все-таки build.xml :

Код:

<?xml version="1.0" encoding="UTF-8"?>
<project name="compile-and-reduce" default="default" basedir="../">
        <condition property="exe" value=".exe">
                <os family="windows"/>
        </condition>
        <condition property="exe" value="">
                <os family="unix"/>
        </condition>
       
        <property name="dir.build" value="${basedir}/build"/>
        <property file="${user.home}/ant/build.properties"/>
        <property name="dir.src" value="${basedir}/src"/>
        <property name="dir.bin" value="${basedir}/bin"/>
       
        <property name="file.swf" value="test.swf"/>
        <property name="file.main" value="Main.as"/>
       
    <target name="compile">
            <exec executable="${flex.mxmlc}">
                        <arg line="-define=CONFIG::Debug,false"/>
                        <arg line="-define+=CONFIG::Release,true"/>
                        <arg line="-strict"/>
                        <arg line="-optimize"/>
                        <arg line="-debug=false"/>
                        <arg line="-static-link-runtime-shared-libraries"/>
                        <arg line="-o '${dir.bin}/${file.swf}'"/>
                        <arg line="-el '${flex.libs}/player/10.0/playerglobal.swc'"/>
                        <arg line="-sp '${dir.src}'"/>
                        <arg line="-- '${dir.src}/${file.main}.as'"/>
                </exec>
        </target>
       
</project>

Всем спасибо, все работает.

Котяра 05.07.2012 16:23

Я бы ещё задал не
Код AS1/AS2:

default="default"

а
Код AS3:

default="compile"

чтобы в консоли (мало ли) вызывать просто
Цитата:

ant

Samuel_D 05.07.2012 17:26

Котяра, спасибо, так и сделал.

Но теперь не могу вынести Main.as в пакет (package project.loader) :
Ошибка: Файл, найденный по исходному пути, должен иметь структуру пакета "loader", идентичную пакету определения "project.loader".


Часовой пояс GMT +4, время: 12:14.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.