2011-04-14 41 views
3

我刚刚在几天前开始使用ant。现在我有一个通用的buildall.xml,它应该调用每个项目的build.xml。由于一些项目相互依赖,我需要重建一些其他依赖它的项目。这不是一个问题 - 我只是设置目标的依赖属性。但是,ant始终构建依赖关系,即使文件没有更改也是如此。创建ant构建脚本以仅在更新依赖时生成

假设project1没有依赖关系; project2依赖于project1; project3取决于project1,2;项目4取决于项目1,2和3;等等。

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

什么是最简洁的方式来实现呢?编辑:所以我决定只是在一堆目标,“check_projectK”在哪里做uptodate检查所有的源文件,其构建文件和1 .. K-1的构建文件项目。由于依赖关系,这总是处理正确。但是,对于大型工作区,这仍然是大量的复制和粘贴。我会保持开放。

回答

1

简短的回答,ANT不能这样做,除非你有某种方式连接到你的版本控制系统,并检查是否有任何改变(你使用的是源代码控制权吗?)。 Ant不知道上一次文件更改的时间,然后查看它是否与构建的内容匹配;它没有依赖库的概念。蚂蚁的全部目的是它只是建立

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

最重要的是,它与Hudson,Bamboo和Teamcity这样的持续集成引擎很好地结合在一起,每次将文件提交到源代码管理系统时都会生成项目,然后自动更新所有相关项目!

+0

这就是我的想法 - ANT不能这样做。我会研究Maven,但是我可能会坚持使用ANT,因为它可以工作(尽管构建文件是黑客用黑客手段包裹的)。这里的大多数开发人员都使用FlashBuilder 4插件来实现Eclipse,但有些人会希望使用与ANT一起工作的命令行构建脚本。感谢你的回答。 – Kizaru 2011-04-15 16:25:22

+0

你一定要使用Maven。我很惊讶你没有听说过它。它用于整个企业界。在FlexMojos中,甚至可以运行一个非常酷的脚本,它可以获取pom文件中的所有依赖项(maven相当于build.xml),并创建Flash Builder所需的相应项目文件(该命令为'mvn flexmojos:flashbuilder') 。这是非常有效的:) – 2011-04-15 16:50:02