针对Maven的案件?

Asg*_*sen 3 ant maven-2

我一次又一次地阅读和听到人们对Maven感到沮丧以及它有多复杂.而且使用Ant构建代码要容易得多.

但是,为了:

  1. 编译代码
  2. 运行测试
  3. 打包可部署的单元

这就是Maven所需要的:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>type something here</groupId>
  <artifactId>type something here</artifactId>
  <version>type something here</version>
</project>
Run Code Online (Sandbox Code Playgroud)

什么是相应的最小Ant构建文件?

Dan*_*yer 8

正如Aaron所说,Maven的问题不在于它是如何工作的,它是如何失败的.

在Ant中,依赖管理是一个你必须手动解决的问题(暂时忽略Ivy,因为它本质上是用螺栓固定到Ant上的Maven方法).如果您有很多依赖项,这可能会非常耗时,但这只是一次性成本.一旦您将依赖关系组织起来并检入您的版本控制存储库,它就可以正常工作.至少在你不得不改变依赖关系之前,希望不经常这样(但有些情况并非如此).

Maven通过使依赖项动态化来"解决"依赖性问题,因此避免了大量的前期成本,并且更容易更改依赖项.这种灵活性的代价是复杂性.Maven将您的构建转变为分布式系统,这样做会影响分布式计算8个谬误.其中一些问题在理论上比在实践中更多.例如,我不知道任何Maven存储库被泄露的情况,但这并不意味着您不必了解安全隐患.远程存储库的其他问题,例如可靠性,带宽和延迟,是Maven不满意的更常见原因.

Maven将在本地缓存依赖关系,以便在您检索到项目所需的所有内容后,应避免重复访问存储库.但随着时间的推移,随着项目开发人员数量的增加,您需要在几个时间点重新检索依赖项.使用默认的Maven设置,您需要外包依赖项管理.是否可以在需要时立即使用依赖项,或服务器是否已关闭?是否仍可在6个月内从远程存储库中获取?可能,但它不在你的控制之内.

因此,Maven的支持者会告诉您,您可以并且应该运行自己的Maven存储库,以避免由分布式依赖项引起的许多问题.好的,但是在这一点上我们必须停止假装Maven很简单. 维护自己的Maven基础架构可能会非常复杂.

人们过去对Maven生气的另一个原因是它的插件系统.Maven能够自我更新,但经常会导致破损.我相信这种行为已经在最近的版本中得到了驯服.

Maven可能仍然是某些环境的最佳解决方案,例如并行开发多个项目并且它们之间存在某种耦合的团队,但它远非痛苦.

蚂蚁也没有疼痛,但疼痛往往是自我造成的,而不是你的控制.您需要引入更高级别的抽象来保持可管理性. Ant Macros在这方面是一个有用的工具.有一些纪律和明智的约定(也许像Maven鼓励的那样?)你可以有效地将Ant用于大型项目.Ant构建文件就像任何其他程序一样(除了详细的XML语法之外),它需要在事情发生变化时进行维护和重构,而不是直到它看起来有效才被破解.Ant对它有利的是强大的,它通常会产生可重复的构建,并且有很好的文档记录.

  • 这就是FUD.Maven构建是可重复且健壮的,只需正确使用Maven即可. (3认同)

Tom*_*vic 6

没有相应的最小ant文件.Maven是使用RoRspeak的固定软件.它假定您的代码所在的位置,编译文件的位置,可分发的位置,如何触发测试以及其他任务的加载.换句话说,基本上没有必要为maven 明确定义,以便能够完成这些任务.

问题是,当然,不是一切都适合到一个预先确定的框架,所以做一些具体的事情有必要,就像蚂蚁(对于该工具的一切是具体的,反正)亮:没有区别,你只需描述你需要什么.据我了解,这是人们对maven的常见抱怨.另一方面,maven不会阻止配置,所以可以调整它,如果需要可以使用ant.

我更喜欢maven用于一个新项目,因为我可以遵循合理的maven约定,但是会为现有项目使用ant构建脚本.

更新:

更正:对于现有的项目,我会花很长时间,很难看到迁移到maven,只有这样,如果我真的被推到墙上,请使用ant.我使用Maven的越多,我越意识到它确实是多么的有价值的工具,它变得有多难自圆其说蚂蚁:立即有价值的插件(即不是搭积木,像蚂蚁),标准化(大三都没有问题跳河新的项目和建筑法规),依赖管理,哈德森/詹金斯整合......很难证明蚂蚁更多,除了极端结束的项目寿命建立,至少在类型的项目,我的工作.