【问题标题】:Creating ant build script to build only when a dependency was updated创建 ant 构建脚本以仅在更新依赖项时构建
【发布时间】:2011-04-15 23:50:21
【问题描述】:

几天前我刚开始使用 ant。现在我有一个通用的 buildall.xml,它应该调用每个项目的 build.xml。因为有些项目相互依赖,所以我需要重建一些依赖它的其他项目。这不是问题——我只是在设置目标的依赖属性。然而,ant 总是在构建依赖关系,即使文件没有改变。

假设 project1 没有依赖项; project2 依赖于 project1; project3 依赖于 project1、2; project4 依赖于 project1、2、3;等等。

我可以破解一个查看项目 K 的解决方案,并检查项目 1 .. 项目 K 是否使用 uptodate 更新了文件。如果是这样,则运行目标。这很混乱,看起来没有必要。

什么是最简洁的实现方式?

编辑:所以我决定只破解一堆目标,“check_projectK”,它在其中对所有源文件、构建文件和 1 .. K- 的构建文件进行uptodate 检查1个项目。由于依赖关系,这总是被正确处理。但是,对于大型工作区,这仍然是大量的复制和粘贴。我会保持打开状态。

【问题讨论】:

    标签: apache-flex ant build


    【解决方案1】:

    简短的回答,ANT 做不到,除非您有某种方法可以连接到您的版本控制系统并检查是否有任何更改(您使用的是源代码控制对吗?)。 Ant 不知道文件最后一次更改是什么时候,然后查看它是否与构建的内容匹配;它没有依赖库的概念。 Ant 的全部目的在于它只是构建

    解决问题的方法不是 Ant,而是 Maven。 Maven 有一个依赖库。还有一个非常漂亮的 Maven 插件,专门用于 Flex,名为 FlexMojos。通过使用它,Maven 可以知道上次构建的时间,因为它已上传到存储库。然后您的其他项目可以添加它的依赖项并下载所需的 SWC。

    最重要的是,它与 Hudson、Bamboo 和 Teamcity 等持续集成引擎完美结合,每次将文件提交到源代码控制系统时都会构建一个项目,然后自动更新所有相关项目!

    【讨论】:

    • 这就是我的想法——ANT 做不到。我会研究 Maven,但我可能会坚持使用 ANT,因为它可以工作(尽管构建文件是用黑客纸包裹的黑客)。这里的大多数开发人员都使用用于 Eclipse 的 FlashBuilder 4 插件,但有些人想要一个与 ANT 配合使用的命令行构建脚本。感谢您的回答。
    • 你肯定想使用 Maven。我很惊讶你没有听说过。它在整个企业世界中使用。在 FlexMojos 中,您甚至可以运行一个非常酷的脚本,它获取 pom 文件(maven 等效于 build.xml)中的所有依赖项,并创建 Flash Builder 所需的适当项目文件(命令为 mvn flexmojos:flashbuilder)。它非常高效:)
    猜你喜欢
    • 2010-09-05
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多