Создание SWC из IntelliJ Idea без использования ant?

Во-первых, вот что я хочу сделать:

* Compile my library code into a SWC
* Do not staticly link the Flex framework

Сначала я попытался просто настроить модуль Flex, нажав кнопки «библиотека» и «использовать фреймворк в качестве RSL». Однако это не компилирует мой код в SWC, а просто компилирует новый SWC всей инфраструктуры Flex, включая все ресурсы и классы.

Затем мне удалось включить свои классы в сборку, используя настраиваемую конфигурацию компилятора, но она по-прежнему включает несколько классов Flex, на которые я ссылаюсь в коде моей библиотеки.

Наконец, я решил, что могу использовать настраиваемый файл flex-config.xml, удалить родительскую ссылку на библиотеку с помощью <library-path append="false"></library-path>, а затем, используя настраиваемый параметр командной строки (а также из ant), добавить -compiler.external-library-path ссылки на SDK и PlayerGlobal.swc . Вероятно, это должно сработать, но Idea не позволяет мне устанавливать параметры командной строки, когда я использую пользовательский файл конфигурации: '(

Любые предложения приветствуются!


person Sophistifunk    schedule 18.01.2010    source источник


Ответы (1)


Хорошо, вот что сработало благодаря помощи на форумах Idea, поиску в Google и случайным экспериментам. Обратите внимание, что некоторые параметры указаны как "{name}", а некоторые - "$ {name}". Нет, не знаю почему: - /

<!-- Specifies the minimum player version that will run the compiled SWF. -->
<!-- 9.0.124 is the April 2008 security release -->
<target-player>9.0.124</target-player>

<compiler>

    <source-path>
        <path-element>src</path-element>
    </source-path>

    <incremental>true</incremental>

    <keep-as3-metadata append="true">
        <name>Inject</name>
        <name>InjectInto</name>
        <name>InjectIntoContents</name>
        <name>Singleton</name>
        <name>PostConstruct</name>
    </keep-as3-metadata>

    <!-- Remove the "include" library path. -->
    <library-path append="false"></library-path>

    <!-- Set up an "external library" path that is compiled against but not linked. -->
    <!-- SWCs not used for SP are left in but commented out to make it easier to copy this script -->
    <external-library-path>
        <path-element>${flexlib}/libs/player/{targetPlayerMajorVersion}/playerglobal.swc</path-element>
        <path-element>${flexlib}/libs/framework.swc</path-element>
        <!--<path-element>${flexlib}/libs/flex.swc</path-element>-->
        <!--<path-element>${flexlib}/libs/rpc.swc</path-element>-->
        <!--<path-element>${flexlib}/libs/utilities.swc</path-element>-->
        <!--<path-element>${flexlib}/libs/datavisualization.swc</path-element>-->
    </external-library-path>

</compiler>

<static-link-runtime-shared-libraries>false</static-link-runtime-shared-libraries>

<include-classes>
    <class>net.expantra.smartypants.impl.InjectorImpl</class>
</include-classes>

<output>./build/SmartyPants-IOC.swc</output>

person Sophistifunk    schedule 19.01.2010