用cruisecontrol来发布项目以及编译程序好一阵了,总结了一下相关问题,当初自己也遇到过的,希望对大家有帮助
1.cruisecontrol编译swf问题
如果直接对相对路径的话,会报 mxmlc错误: 无法打开“src“
这里mxmlc很奇怪,直接用ant编译的话,这个build.xml文件是没错的。但是如果采用cruisecontrol来自动编译的话,就会出错上面的错啦。既然是路径问题,那就改成绝对路径。
经过测试发现,只需要在<mxmlc></mxmlc>字段中的file属性和source-path属性路径需要修改以外,其他地方不一样,可以正常编译通过。
(当然,也可以取相对路径,但是必须加上projects/游戏项目名称/src)。比其他地方,在src面前增加了projects/游戏项目名称。
这里我估计是ant的问题,我采用EditPlus里编译build,可以看成ant和build在同一个目录,所以路径不会出现问题。但是在projects/游戏项目名称中,ant是和projects同个级别的目录。所以需要特别指明路径。(这里有点奇怪的是,编译java却不会出现这个问题)
2.用ant编译flash的swc时,有时会造成Java heap space错误。检查一下,发现是编译时读取了太多的flex的swc,根据需要去掉一些没用的swc就可以。例如编译纯as3项目,只需要导入playerglobal.swc就可以了。当然,你也通过设置jvm虚拟机的Heap值。
3.svn错误
程序代码
net.sourceforge.cruisecontrol.CruiseControlException: svn failed with exception
at net.sourceforge.cruisecontrol.util.CommandExecutor.executeAndWait(Com
mandExecutor.java:115)
at net.sourceforge.cruisecontrol.util.Commandline.executeAndWait(Command
line.java:617)
at net.sourceforge.cruisecontrol.bootstrappers.SVNBootstrapper.bootstrap
(SVNBootstrapper.java:134)
at net.sourceforge.cruisecontrol.Project.bootstrap(Project.java:760)
at net.sourceforge.cruisecontrol.Project.build(Project.java:192)
解决方法:原因是你的命令行不能执行SVN命令,所以装一个subversion就可以解决了,希望使用的subversion版本新一点,要不然还会报版本过旧的错误。 注意,千万不要去弄客户端的TortoiseSVN
4.
<bootstrappers>
<svnbootstrapper localWorkingCopy="projects/${project.name}/src" />
</bootstrappers>
注意,这里
程序代码
<svnbootstrapper localWorkingCopy="projects/${project.name}/src" />
和
<modificationset quietperiod="30">
<svn localWorkingCopy="projects/${project.name}/src"/>
</modificationset>
中指定的目录,必须是一个svn目录。不然会包svn: '.' is not a working copy的错误,可以继续执行,这时你的build.xml如果也有svn的话,也是可以正常进行的
同时,这里指定了svn,那么在项目的build.xml中,就不需要增加svn的设置了