在ant / nant中构建Flex项目
由于Flex项目的构建中断,我们公司经常遇到问题。出现此问题的主要原因是,开发人员在其本地计算机上进行的构建与在构建计算机上进行的构建从根本上有所不同。开发人员正在使用" FlexBuilder / eclipse"构建项目,而构建机器正在使用命令行编译器。不可避免的是,{projectname} -config.xml和/或者运行构建的批处理文件与eclipse使用的项目文件不同步,因此构建在开发人员的计算机上成功,但在构建计算机上失败。
我们从编写实用程序的路径开始,将FlexBuilder的项目文件转换为{{projectname} -config.xml`文件,但这是a)没有文档记录,b)骇人听闻的骇客。
我研究了-dump-config开关以获取配置文件,但这有两个问题:1)生成的配置文件具有绝对路径,在我们的环境中不起作用(某些开发人员使用macs,某些Windows 2)仅在从IDE运行时正确运行,因此无法构建到构建过程中。
明天,我们将讨论几个选项,我都不喜欢这两个选项:
a)向Subversion添加签入后事件以删除这些绝对引用,或者
b)添加一个删除绝对引用的预构建过程。
我无法相信我们是第一批遇到此问题的开发人员,但我在Google上找不到任何好的解决方案。其他团体如何处理这个问题?
解决方案
回答
我发现将ant与Flexbuilder一起使用的未记录要求之一是在ant脚本中设置变量FLEX_HOME。通常,在build.xml中具有以下内容:
<!– Module properties –> <property environment=”env”/> <property name=”build.dir” value=”build”/> <property name=”swf.name” value=”MyProjectSwf”/> <property name=”root.mxml” value=”Main.mxml”/> <property name=”locale” value=”en_US”/> <property name=”FLEX_HOME” value=”${env.FLEX_HOME}”/>
这可能看起来很麻烦,但是如果我们为开发人员使用多个平台,则这是一种在各个平台和环境之间获得一致性的更为合理的方法。
高温超导
回答
虽然不是解决我们特定问题的解决方案,但解决方法是使用连续集成服务器。
使用Cruise Control之类的工具,每当有人向源代码管理提交某些内容时,我们就可以自动启动构建。然后,如果构建由于任何原因(包括环境不一致)而失败,则由开发人员自行修复以进行修复。我们可以将其配置为以各种方式在失败/成功时发送电子邮件。