我有一个 Intellij 模块,它使用另一个模块作为库。可以使用以下方式链接库:Merged、External、Include 或 Test。
这四个选项是什么意思?他们的行为有何不同?
在 Intellij 论坛上,有人提到“Merged”和“External”类似于 Flash Builder 的“Merged into code”和“Runtime shared library”。但是如果是这样的话,Include 和 Test 做什么呢?
我有一个 Intellij 模块,它使用另一个模块作为库。可以使用以下方式链接库:Merged、External、Include 或 Test。
这四个选项是什么意思?他们的行为有何不同?
在 Intellij 论坛上,有人提到“Merged”和“External”类似于 Flash Builder 的“Merged into code”和“Runtime shared library”。但是如果是这样的话,Include 和 Test 做什么呢?
IntelliJ 文档仅链接到Adobe 对 RSL 的描述,但这就是四种设置的工作方式:
合并
链接项目中实际使用的所有库符号,并将它们包含到目标二进制文件中。这应该是创建 SWF 可执行文件的默认设置。
包括
链接库中的所有符号,无论是否使用它们,并将它们包含到目标二进制文件中。这在创建扩展库(包括您正在扩展的具有附加功能的模块,以便您以后只需要包含一个 SWC)或getDefinitionByName
经常使用时很有用。
排除
在编译时链接库类,但不将它们包含到目标二进制文件中。这意味着目标二进制文件仍然很小,但是当然,排除的依赖项必须要么编译到其他库中,要么作为 RSL 存在以在运行时可用——没有它们,程序就无法运行。此设置在创建库 SWC 时特别有用,否则每个库 SWC 都将包含 playerglobal.swc 及其所有其他依赖项。
测试
库类仅包含在用于 FlexUnit 测试的临时二进制文件中。这可以防止 FlexUnit 框架本身以及其他测试框架(例如 Hamcrest 或 Mockolate)使生产二进制文件膨胀。