Maven或常春藤pipe理ant的依赖?
我想知道从antpipe理项目依赖关系的最佳方法。 Maven Ant任务和常春藤有什么优点和缺点?
由于你想要做的是将依赖pipe理添加到现有的Ant项目,这正是艾维devise的目的。 依赖pipe理是Maven的重要组成部分,但远非全部。 Maven更多的是一个面向项目的工具,除了依赖之外,还有其他几件事情。 如果你计划迁移到Maven并使用额外的Maven特性,这将是值得考虑的,但是如果你用它来分离Ant,那么它有点多。
你的依赖types和你对他们行为的期望也会有所作为。 在Maven中拉取第三方依赖关系几乎是微不足道的,而常青藤擅长重build自己的依赖组件。 无论哪种情况,这些工具都不会提供体面的构build,版本控制和存储库策略 ,这些仍然取决于您,需要正确configuration。
ant+常春藤==营地,人们根据需要使用设施。
Maven ==度假村,你依靠别人来提供服务。
Maven对于缺乏构build/集成经验的团队来说更容易,但是当团队需要与Maven标准分道扬they时,他们会发现自己已经习惯了Groovy,Gradle,缺乏可靠的文档将变得令人沮丧。
Ant + Ivy需要更长的时间来启动一个项目,但是如果团队有构build/集成的经验,他们可以围绕他们开发和发布代码的方式定制构build系统。
在工程技术公司,我总是推动营地解决scheme与度假村。
虽然Ant和MavenselectXML作为他们的语言来expression构build食谱是令人惊讶的。 Java社区停留在那个XML上
常春藤+ant远远更加灵活。 常春藤做依赖pipe理,时期,它做得非常好,比Maven好。 而用Ant你几乎可以将任何你想要的构build系统放在一起。
Maven试图控制一切 – 文件应该存在的“生命周期”(编译,testing,包等),等等。 如果你不喜欢“Maven方式”,可以自定义插件之类的东西。
Maven是没人问的问题的答案。 编写一个Ant脚本并不难,常春藤给你比Maven更好的依赖pipe理。 以前的一些评论让我感到困惑,说他们不能让艾维工作。 常春藤比Maven更容易起床和运行。
Spring框架在构build过程中使用Ivy。 我认为这可以被看作是对常春藤的信任投票。
我认为这个博客文章涵盖了OP正在寻找什么:
为什么你应该使用Maven Ant Tasks而不是Maven或Ivy
如果您的长期目标是迁移到使用Maven来pipe理整个构build过程(可能打算为新的绿地项目做),那么我衷心推荐使用Maven pom.xml文件来代表Ant build.xmlpipe理依赖关系文件。 最终的结果是,您的新build项目和旧项目都使用相同的机制来pipe理依赖关系。 事实certificate,Maven在pipe理Ant build.xml文件的依赖性方面确实做得比Ivy更好。
在将Maven作为我们的旗舰构build工具之前,我曾经有一位开发人员尝试将Ivy与现有的Ant build.xml文件结合使用。 这是最令人沮丧的经验,很快就导致我们拒绝常春藤。 我们继续采用Maven。 我们的绿地项目开始使用Maven的股票方法等。
但是,我回到了Ant遗留项目,并开始使用Maven Ant任务来定义类path定义(偶尔还有其他来自pom.xml的Ant属性定义)。 这原来是最高级的经验。 现有的Ant build.xml文件只需稍作修改即可使用Maven ant集成来定义build.xml文件中正在使用的任何类path。 项目所需的所有依赖关系都在随附的pom.xml文件中定义,该文件由Maven通过合并到build.xml文件中的Ant任务处理。
Maven作用域可用于微调类path定义,以便可以build立适合编译,运行unit testing或打包等的类path定义。 另外,几乎任何在pom.xml文件中定义的元素都可以作为build.xml文件中的Ant属性引用。
真正与Maven的Ant任务没有可行的理由,常春藤甚至存在。
比较Maven与常春藤/ant是比较智能手机和电报。
如果您想要在构build基础架构中发挥真正的持久效应,最好使用Maven,因为它可以预测和抽象每个软件项目或其他类似软件项目所面临的所有stream程和任务。 我参与了许多项目,如果您的项目变得更加复杂,更多样化和更多异构化,您将会更赞赏Maven项目configuration的简单性。 事实上,与常春藤/ant驱动的项目相比,它会变得复杂而不复杂。
Maven的主要优点是“约定优于configuration”(http://en.wikipedia.org/wiki/Convention_over_configuration)一个非常重要的范例。; 总之,这意味着你不需要知道/configuration明显/琐碎/普通的东西。 尽pipeMaven及其所有插件都提供了许多默认设置,但您始终可以根据自己的特殊需求来configuration项目。 借助Maven,一方面您可以非常方便快捷地设置项目; 另一方面,您可以以最小的努力定制一个满足您需求的增长项目。 如果您已经理解了Maven背后的关键概念,那么您将利用每个项目以及不属于典型软件开发项目的项目。
在过去,我写了很多的ant脚本,即将到来的Maven,我开始讨厌ant。 一个缺点是,你总是复制脚本,重复自己,发展ant任务,不重复任务,不重复的任务,不重复的任务…主要的缺点是,越来越多的ant脚本往往得不到保持,尤其是如果十几个ant极客想搓对方的ant脚本。
许多ant爱好者都受到整体控制,如复制文物和打印生成消息等琐碎的事情。 但是,因为Maven的关键概念是隐藏这些琐碎的事情,传奇将永远活着,Maven限制了定制需求。 但是别担心,这是一个传奇! 所以你终于明白了我的初步陈述:不要为已经解决的琐碎事情烦恼。
也许常青藤/ant是一个简单的项目的选项,但复杂的增长项目,你需要简单和约定。 否则,你会被越来越多的维护问题所困扰。 特别是如果在全球项目中有许多依赖项目,技术和异构产品部件,那么您没有时间和资金来开发和testingant脚本或解决依赖性问题。
应该提到另一个build议:Ant提供了Maven的集成。 这个集成经常被用来testing和玩ant长大的项目中的maven。 避免这种愚蠢的做法,因为它会产生更多的问题。 相反,留在ant和它的痛苦或完全迁移到maven。
如果您对移植成本有疑问,我build议您使用Maven-Ant-Plugin相反的方式来整合不同的世界。 有了这个标准的插件,你可以毫不费力地运行每一个ant脚本。 当然,这是一个传统的解决scheme,但它给了你足够的时间去理解你的前任的巨大的扭曲的未注释的ant脚本。
现在您将赞扬maven的下一个优势:您需要的configuration文档非常less,因为文档是您要使用的每个maven插件的一部分。
所以我承认我是一个Maven-Antagonist。
我知道常春藤的一个优点是它可以使用不同types的存储库。 Maven通常使用它所使用的版本库的格式。 这是我所知道的一切。
我刚刚花了2天的时间阅读艾维文档,我不得不说,如果您有任何select,请使用MAVEN。 常春藤是完整的,完全垃圾,据我所知。 我只是浪费了2天的时间,试图把它融入到我的构build中,现在正在削减我的损失。 为什么?
- 常春藤是依赖pipe理方面的一次尝试
- 常春藤文档是一个总的笑话
- 常春藤的例子和教程是无用的
只要我介绍'configuration'(阅读mavenconfiguration文件),艾维开始去bezerk下载各种垃圾,我不需要然后失败。 常春藤的文件是一个完全的笑话。 相比之下,Maven文档就像是一个梦。 如果你想要一个关于Ivy文档是多么难以理解和写得不好的例子,可以看一下参考页面的configuration 。 这些是任何构build的重要组成部分,但在常春藤,他们似乎是经过深思熟虑devise的。