从命令行编译Flex Builder项目

17
有没有一种简单的方式可以通过命令行构建在FlexBuilder中创建的项目?
我开始着手将几个Flex组件添加到我在工作中的项目中。目前,该项目的其余部分(包括Java和C++)是通过一个ant脚本构建的。我真的很想能够将我正在处理的Flex组件的构建集成到该ant脚本中,但我不确定如何从命令行构建Flex项目。
有没有一种方法可以从命令行调用flex编译器,以便它使用flex builder的项目作为配置?或者是否有一种方法可以修改FlexBuilder的编译,使我可以编写一个构建脚本来使用它(这样我只需要一种构建方式,并且ant和FB都使用它,而不是分别使用不同的构建过程)?
虽然flex ant任务更可取,但并非必需,因为我可以轻松地从命令行应用程序创建自定义任务。
编辑:
还有一件额外的事情我应该提一下。虽然我已经安装了FlexBuilder,但运行那个ant脚本的一些人没有安装。他们只会使用普通的Flex SDK。

请查看:http://livedocs.adobe.com/flex/3/html/help.html?content=anttasks_1.html - mmattax
是的,我找到了那些。它们并没有特别有帮助。 - Herms
4个回答

9
您可以在FB中使用-dump-config选项来转储FB用于编译项目的config.xml,然后使用该文件(使用-load-config选项)进行命令行构建。
我知道在常规Eclipse中,您可以从ant文件构建,并且我很确定您可以在FB中执行相同的操作。
尽管flex ant任务的文档有点糟糕,但它们还是可以正常工作的。
[编辑] - 我在评论中回复了,但我想详细说明我的回复。Herms在使用-dump-config和-load-config时遇到了问题,这也说明为什么flex ant任务更好。 (我不想成为那个说“你为什么要做X?”的人,所以我只回答了提问的问题)。
尽管他们的文档不太好(在我看来),但它们更适合构建您的项目。虽然使用flex ant任务存在一些陷阱,但基本上并不难(而且实际上这些陷阱更多是因为文档糟糕)。
当我开始为我们的项目进行自动化构建时,我发现这个网站非常有价值:
http://www.nabble.com/FlexCoders-f16212.html

它对我非常有帮助。


那个配置文件里有很多绝对路径,这可能会在其他机器上构建时引起问题(源路径和SDK路径都会不同)。有没有好的方法来概括它(是否有任何方法在其中引用环境变量)? - Herms
load-config 给我报错了: 错误:无法打开 'mxml-manifest.xml'。有什么想法吗?我没有修改配置文件。 - Herms
这个链接:http://www.mail-archive.com/flexcoders@yahoogroups.com/msg55152.html 建议使用绝对路径来指定mxml-manifest.xml。我最初回复你的帖子时想说“只需使用ant任务”,这也是为什么。Ant任务可以让事情变得更容易。 - dw.mackie
哦,如果我到处都能使用ant,那就太好了。不幸的是它似乎不能很好地与FlexBuilder集成(构建错误无法点击以跳转到发生错误的文件/行)。看起来现在我只需要有两个构建过程,FB和ant。 - Herms

1

我写了一篇关于如何设置Flex和Ant的博客文章,并提供了一个示例构建文件。虽然我是为Linux编写的,但Ant部分是跨平台的。(请参见第4步):

http://blog.apterainc.com/software/setting-up-a-flex-development-enviroment-in-gnulinux/

如果你需要任何帮助,请留下评论,我可以解决你遇到的任何问题。
编辑:Flex的ant任务文档有点稀缺,但这里有来自Adobe的官方文档,足以让我上路:http://livedocs.adobe.com/flex/3/html/help.html?content=anttasks_1.html

1
那看起来肯定很有帮助,不过我更喜欢一种与FlexBuilder集成的方式。我确实看到了一些关于在FB中设置Ant的博客文章,因此将其与您的方法结合起来可能会得到可用的结果。 - Herms
像许多伟大而美妙的FLEX功能一样,这个URL已经失效了。 - D3vtr0n

1

Flex 3附带了Ant任务,可以从命令行构建Flex应用程序。文档可在此处获得。此外,还有一个很棒的开源构建框架叫做Antennae,它可以帮助组织和从命令行构建Flex应用程序(它是基于Ant的)。


0

我最初使用的是Antennae,但当我意识到它不使用Flex Ant任务时,我感到非常失望。为了得到我需要的东西,我需要修改它传递给mxmlc的命令行参数...而且Antennae不支持模块等其他易于使用Flex Ant任务完成的功能。无论如何,我想出来的是将我在Antennae中发现的好方面与这篇博客文章中的构建文件的好方面混合在一起的结果: http://jvalentino.blogspot.com/2010/03/flex-ant-build-optimized-modules_24.html


1
孤立的链接被认为是一个不好的答案,因为它本身是没有意义的,并且目标资源未来也不能保证存在。最好在这里包含答案的关键部分,并提供参考链接。 - j0k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接