草庐IT

actionscript-3 - 用于 as3/flex 项目的 CI 友好型自动化构建

coder 2023-04-24 原文

免责声明:我对闪存构建过程相对不熟悉,因此部分/所有这些可能是误导性的废话。请随时提出替代方法。

我们目前正在开发一个 flex 网络应用程序,但我们的构建情况远非理想。目前,我们(与个人开发人员一样)只是使用 FlashBuilder 构建并手动部署。不过,程序员们现在大喊血腥谋杀有两个原因:

  • 缺乏CI就像回到石器时代
  • 我们不太关心 FlashBuilder

(注意:我们只使用 FlashBuilder,因为它是与 Away3d 一起设置 flex 项目并使其正确构建/呈现的最简单方法——这是一种权宜之计)。

作为主要的 .NET 开发商店,我们习惯于进行持续集成和持续部署。理想情况下,我们希望在我们的 Flash 项目中获得与此类似的东西,而无需将自己绑定(bind)到特定的 IDE。

要求:

构建过程必须是:

  • .. 可通过命令行运行
  • .. 可在开发人员和 CI 构建机器上运行(当然不需要 IDE!)
  • .. 最好尽可能独立于 IDE(不过实用主义会发挥作用;如果这会引起很多摩擦,我们只会选择一个)。
  • .. 能够在 Windows 上运行(我们使用 Windows 开发)

我们不介意一些重复或一些手动步骤(例如,如果我们通过 IDE 添加一个新项目,则启动构建脚本,或者如果存在工具,则从另一个生成一个配置),但更少的重复/维护要求更好。

我已经阅读了很多文章/博客文章并观看了一些简短的截屏视频,但其中大多数都非常了解构建系统如何与 IDE 并存。大多数文章/截屏视频都有相同的公式:如何使用单个文件和文本编辑器(无 IDE)创建“Hello World”构建。

我也没有看到涉及多个库/项目等的话题。

在阅读了一段时间后,我正在考虑调查以下选项:

是否有人对上述解决方案(或其他我不知道的解决方案)有任何经验,如果有,您对它们有何看法?任何帮助/指针表示赞赏。

最佳答案

我最近开始使用 Gradle 进行构建和 GradleFx插件,我立即爱上了它的强大功能和易用性。

Gradle 是由 ANT + Maven + Ivy 演变而来的,主要用于命令行。你可以:

  • 使用 Groovy(一种在 Java 虚拟机中运行的强大的类 Ruby 语言)编写脚本
  • 访问所有现有 Maven 和 Ivy 存储库 以及您自己的存储库
  • 使用现有的 ANT 任务
  • CI 集成(在 Jenkins 中,您只需勾选复选框即可激活 Gradle 支持)
  • 虽然它最初是从 Java/Groovy 社区发展而来的,但实际上它是语言无关。您添加特定于语言的插件以增加功能。 GradleFx 就是这样一个插件,可为您提供额外的 ActionScript/Flex 构建任务。
  • 轻松进行多项目构建。例如只需一个命令,您就可以编译、单元测试、打包和部署 .NET 服务层和 Flex 客户端应用程序。
  • 使用约定优于配置:如果您遵守约定,您的构建脚本将非常简洁
  • 生成各种报告:单元测试、检查样式、codenarc、...
  • 生成 Eclipse、IDEA 或其他 IDE 项目
  • 所有我还没有发现的东西

最重要的是:它非常容易学习。在开始使用 Gradle 之前,我对 Maven 一无所知,并且可以快速构建带有一些自定义的多项目构建。

编辑(与 Buildr AS3 和 Maven 相比)

我只能将其与您提到的项目之一进行比较:Builder AS3。它似乎是从一种类似于 Gradle 的哲学开始的。 但是我大约半年前尝试使用它,甚至无法让一个简单的“Hello World”应用程序运行。我向开发人员发送了电子邮件寻求帮助:没有回复。

与 GradleFx 相比:我与开发人员进行了一次小型论坛讨论(关于一个相当哲学的话题,因为我真的不需要任何帮助,因为它马上就起作用了)。他在几分钟内就回复了。

至于 Maven:(就其值(value)而言)我只看了一些配置,当我将它们与 Gradle 脚本进行比较时,它们似乎过于复杂。

Maven 做的一件事是 GradleFx 做不到的(目前)。它可以从 Maven 存储库中提取正确的 Flex SDK 并针对它进行构建。使用 GradleFx,您必须让您的 SDK 在本地可用。

关于actionscript-3 - 用于 as3/flex 项目的 CI 友好型自动化构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9038328/

有关actionscript-3 - 用于 as3/flex 项目的 CI 友好型自动化构建的更多相关文章

  1. ruby-on-rails - 结合 meta_search 与 acts_as_taggable_on - 2

    我在开发的Rails3网站的一些搜索功能上遇到了一个小问题。我有一个简单的Post模型,如下所示:classPost我正在使用acts_as_taggable_on来更轻松地向我的帖子添加标签。当我有一个标记为“rails”的帖子并执行以下操作时,一切正常:@posts=Post.tagged_with("rails")问题是,我还想搜索帖子的标题。当我有一篇标题为“Helloworld”并标记为“rails”的帖子时,我希望能够通过搜索“hello”或“rails”来找到这篇帖子。因此,我希望标题列的LIKE语句与acts_as_taggable_on提供的tagged_with方法

  2. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  3. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  4. ruby - inverse_of 是否适用于 has_many? - 2

    当我使用has_one时,它​​工作得很好,但在has_many上却不行。在这里您可以看到object_id不同,因为它运行了另一个SQL来再次获取它。ruby-1.9.2-p290:001>e=Employee.create(name:'rafael',active:false)ruby-1.9.2-p290:002>b=Badge.create(number:1,employee:e)ruby-1.9.2-p290:003>a=Address.create(street:"123MarketSt",city:"SanDiego",employee:e)ruby-1.9.2-p290

  5. ruby - 在 Ruby 中构建长字符串的简洁方法 - 2

    在编写Ruby(客户端脚本)时,我看到了三种构建更长字符串的方法,包括行尾,所有这些对我来说“闻起来”有点难看。有没有更干净、更好的方法?变量递增。ifrender_quote?quote="NowthatthereistheTec-9,acrappyspraygunfromSouthMiami."quote+="ThisgunisadvertisedasthemostpopularguninAmericancrime.Doyoubelievethatshit?"quote+="Itactuallysaysthatinthelittlebookthatcomeswithit:themo

  6. ruby - 使用 rbenv 和 ruby​​-build 构建 ruby​​ 失败,出现 undefined symbol : SSLv2_method - 2

    我正在尝试在配备ARMv7处理器的SynologyDS215j上安装ruby​​2.2.4或2.3.0。我用了optware-ng安装gcc、make、openssl、openssl-dev和zlib。我根据README中的说明安装了rbenv(版本1.0.0-19-g29b4da7)和ruby​​-build插件。.这些是随optware-ng安装的软件包及其版本binutils-2.25.1-1gcc-5.3.0-6gconv-modules-2.21-3glibc-opt-2.21-4libc-dev-2.21-1libgmp-6.0.0a-1libmpc-1.0.2-1libm

  7. ruby - 如何通过 Rubocop 指示打开 & :read as argument to File. - 2

    我有这个代码File.open(file_name,'r'){|file|file.read}但是Rubocop发出警告:Offenses:Style/SymbolProc:Pass&:readasargumenttoopeninsteadofablock.你是怎么做到的? 最佳答案 我刚刚创建了一个名为“t.txt”的文件,其中包含“Hello,World\n”。我们可以按如下方式阅读。File.open('t.txt','r',&:read)#=>"Hello,World\n"顺便说一下,由于第二个参数的默认值是'r',所以这样

  8. ruby - "undefined method"用于 rails 模型 - 2

    我正在使用带有Rails的Devise,我想添加一个方法“getAllComments”,所以我这样写:classUser在我的Controller中:defdashboard@user=current_user@comments=@user.getAllComments();end当我访问我的url时,我得到了undefinedmethod`getAllComments'for#我做错了什么?谢谢 最佳答案 因为getAllComments是一个类方法,而您正试图将其作为实例方法访问。您要么需要访问它:User.getAllCom

  9. Ruby on Rails regexp equals-tilde 与 array include 用于检查选项列表 - 2

    我正在使用Rails3.2.3和Ruby1.9.3p0。我发现我经常需要确定某个字符串是否出现在选项列表中。看来我可以使用Ruby数组.includemethod:或正则表达式equals-tildematchshorthand用竖线分隔选项:就性能而言,一个比另一个好吗?还有更好的方法吗? 最佳答案 总结:Array#include?包含String元素,在接受和拒绝输入时均胜出,对于您的示例只有三个可接受的值。对于要检查的更大的集合,看起来Set#include?和String元素可能会获胜。如何测试我们应该根据经验对此进行测试

  10. ruby-on-rails - Ruby "Undefined Method"用于类方法 - 2

    Ruby初学者努力简单地将这个@@people散列的值打印到控制台classPerson#haveafirst_nameandlast_nameattributewithpublicaccessorsattr_accessor:first_nameattr_accessor:last_name#haveaclassattributecalled`people`thatholdsanarrayofobjects@@people=[]#havean`initialize`methodtoinitializeeachinstancedefinitialize(first_name,last_

随机推荐