从 IntelliJ Idea 构建 SWC 而无需求助于 ant?

发布于 2024-08-18 22:33:51 字数 574 浏览 10 评论 0 原文

首先,这就是我想要做的:

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

首先,我尝试设置一个 Flex 模块,单击“库”和“使用框架作为 RSL”按钮。然而,这不会将我的任何代码编译到 SWC 中,它基本上只是编译整个 Flex 框架的新 SWC,包括所有资源和类。

然后,我设法使用自定义编译器配置将我的类放入构建中,但它仍然包含我在库代码中引用的几个 Flex 类。

最后,我想我可以使用自定义的 flex-config.xml 文件,使用 删除对库的父引用然后使用自定义命令行参数(也来自 ant),添加对 SDK 和 PlayerGlobal.swc 的 -compiler.external-library-path 引用。这可能应该有效,但是当我使用自定义配置文件时,Idea 不会让我设置命令行参数:'(

非常感谢任何建议!

First, here's what I want to do:

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

At first, I tried just setting up a Flex module, clicking the "library" and "use framework as an RSL" buttons. This however doesn't compile any of my code into the SWC, and it basically just compiles a new SWC of the entire Flex framework, all resources and classes included.

Then, I managed to get my classes into the build using a custom compiler config, but it still includes the few Flex classes that I reference in my library code.

Finally, I figured I could use the custom flex-config.xml file, remove the parent reference to the library using <library-path append="false"></library-path> and then using a custom command line parameter (and also from ant), add -compiler.external-library-path references to the SDK and PlayerGlobal.swc. This should probably work, but Idea won't let me set command line parameters when I'm using a custom config file :'(

Any suggestions are greatly appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

疑心病 2024-08-25 22:33:51

好的,通过创意论坛的帮助、大量的谷歌搜索和随机实验,这就是有效的方法。请注意,有些参数指定为“{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>

OK, Through help on the Idea forums, much googling, and random experimentation, here's what worked. Take careful note that some parameters are specified like "{name}" and some are "${name}". No, I don't know why :-/

<!-- 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>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文