Maven与Ant在Android应用程序中的自动构建



我正在评估是使用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会更容易维护。

相关内容

  • 没有找到相关文章

最新更新