我正在评估是使用Ant还是Maven来自动化我的Android开发构建过程。我一直试图在网上阅读,以做出明智的决定,但没有发现许多与Android开发相关的细节。根据您的经验:
- 主要区别是什么
- 我读到一些人说他们有不同的目的?那会是什么
- 是什么让你选择一个而不是另一个
- 每一个的优点和缺点是什么
- 哪个更容易设置和维护
- 有没有社区里提供/使用最多的
我发现了一个类似的问题,Maven(相对于蚂蚁)在构建android项目方面有什么好处?,但他在问Maven相对于Ant的优势,首先,我甚至不知道Ant的优势;其次,他只得到了一个答案,但我并没有弄清楚。
我使用Intellij,以防它有任何不同,尽管我希望它不会。
如果您可以使用Maven,请使用Maven。而且,你不敢尝试更改标准目录!见鬼,即使我们使用Ant,我也坚持要像Maven一样设置目录。这样,新的开发人员就知道东西在哪里,或者必须通过build.xml
进行跟踪才能找到东西的位置。另一件事是,如果你确实使用Ant,你也应该使用Ivy。这样,您就可以在Ant中获得Maven依赖关系处理。
最大的讽刺是,一旦我们使用Ant和Ivy,并坚持标准的Maven目录结构,从Ant迁移到Maven就轻而易举了。但是,迁移到Maven的需求也减少了。我们的build.xml
简洁易懂。所有文件都在正确的位置。构建快速、简单且易于维护。谁需要Maven?
问题是,一旦我们达到涅盘状态,就要阻止项目返回新泽西州。开发人员开始在我们的build.xml
中挖掘异常。不要编译此*.java
文件。将这个*.xml
移到我们的java
目录中,将测试代码放在main
目录下,但我们会将名称test
放在文件中,所以我们知道它是测试代码。。。新的和复杂的事情都完成了。不知怎么的,我们又回到了塞考库斯。
所以,一旦我的Ant项目干净整洁,可以转移到Maven,我就可以实现飞跃了。
还有一件事:Maven使将项目从一台计算机复制到另一台计算机变得非常简单。Maven处理所有的依赖关系,甚至是构建。不再,您需要AntContrib,或者您需要下载hibernateAnt任务。如果你需要什么,它会自己下载。这也是Maven在许多开源网站上如此受欢迎的主要原因之一。
我对Maven的最大抱怨是它的文档太少了。有一个Wiki,但几乎没有内容,手册也很少。
我最近没有在Java中使用过多少Ant或Maven,但我可以告诉你它们之间的主要区别——它基本上可以归结为自动化约定(Maven)与绝对灵活性(Ant)。
Maven几乎可以为你做任何事情,但如果你安排适合你的项目,它会更容易使用。它可以处理依赖性跟踪和解决、构建、打包和存储构建的包,同时还可以帮助分支维护和发布工程。我发现发布使用Maven构建的(flex)项目要容易得多。
蚂蚁要灵活得多。你可以做任何你想做的事,以任何你想的方式构建。如果您有预先存在的项目,那么您可以在不更改任何其他内容的情况下自动执行IDE的大部分工作。它没有Maven那么容易上手,这也使得在出现问题时更容易诊断。。。不过,对于依赖项、分支和发布,您只能靠自己。在我们使用ant的地方,我们使用它是因为我们已经建立了一个想要自动化的项目,而Maven无法适应它。如果你需要做一些Maven不支持的事情,ant可能是你唯一的希望。
就我个人而言,如果可能的话,我会使用Maven而不是Ant,但我承认这并不总是可能的。
考虑使用Gradle!
它结合了Maven的优点(约定优于配置)和Ant的优点(灵活性和巨大的预制任务库)。
Gradle构建是用Groovy编写的,所以脚本语言的全部功能触手可及!
有一个适用于Gradle的Android插件。不过我没有用过,所以我不知道它是好是坏。
请参阅http://www.gradle.org
我完全同意Andrew的回答。然而,我要注意的是,maven支持不是由android SDK团队提供的。它是由第三方提供的。现在,他们是一个积极的参与者,但这仍然意味着可能会延迟获得对最新功能的支持。
也就是说,我并不特别喜欢android SDK团队提供的蚂蚁支持。如果你运行android create project
,你最终会得到一个build.xml
,它建议你复制粘贴大块的XML来定制它。这使得迁移到新版本的Android SDK变得很麻烦。
总的来说,我怀疑从长远来看,转移到maven会更容易维护。