开始一个新的Maven项目,要避免哪些地雷?

时间:2009-11-21 15:03:47

标签: maven-2

我正在开始一个新项目。我打算第一次使用Maven。通过阅读以前的主题,喜欢Maven的人让我相信......但是那些讨厌 Maven的人似乎已经踩到了地雷,我很想知道更多细节。

似乎我将遵循Maven的惯例。这是轻描淡写吗?还有别的吗?

*这将是一个中等规模,中等复杂性的项目;我的棒球场将是10k行代码,在其生命周期中增长到不超过100k。 (我认为> 500k,小到<10k,FWIW)。*

是的,我正在使用Maven。如果陷阱是“Maven”,没有任何其他细节,你就会在回复上浪费带宽。

5 个答案:

答案 0 :(得分:7)

事实上,遵循Maven哲学及其惯例是一个好主意,因为不遵循它们会使事情变得更复杂。

但是,因为似乎很难在一个答案中总结哲学,因为Maven有一点学习曲线,并且因为Maven文档并不总是那么好(这可能是最大的地雷),建议实际上是拿一本书(或两本书)来做书中的事情。如果您不知道选择哪一个,请查看this page。在我看来,Maven: The Definitive GuideBetter Builds with Maven绝对是很好的读数,可以在线获取。但Brett Porter合着的后期Apache Maven 2: Effective Implementation也必定是一个很好的,我只是没有读过它。

当您开始使用时,请不要犹豫,询问有关特定主题的建议,指导和指示,以便走正确的道路。 maven user list是一个很好的地方。在StackOverflow上提出问题是另一种选择:)例如,如何组织多模块构建可能是第一个主题之一。但是没有更多细节,现在就不可能回答。

答案 1 :(得分:6)

我肯定会建议您在所在地设置nexus repository。这是免费的,有助于集成非maven存储库jar,并在本地缓存它们,以提高设置新环境的性能。

答案 2 :(得分:2)

关于设置群组回购的prior answer可能会提供一些有用的建议。以及this on splitting up projects

答案 3 :(得分:1)

请勿使用您并不真正需要的花哨功能,例如:

  • Multimodules
  • 父母poms

尽可能保持尽可能平稳。尽早播放发布周期,例如通过执行0.0.1版本的发布。让它自动化。

如果您正在使用复杂的设置(例如Eclipse + m2eclipse + WTP +方面),请准备好一些故障并知道每个工具存储设置,临时文件等的位置,以便您可以在必要时手动清理它们。如果您认为“maven做到了这一切”只是为了发现由于缓存或类似问题而未更新快照依赖项,那么可能会丢失很多时间。

答案 4 :(得分:0)

在“Maven”一词中,我们想到了Maven核心和一堆插件,它们是由Maven团队或其他人开发的。在Maven世界中不完美的事情是:

  • 难以理解依赖的范围,导致用户poms和第三方供应商poms的常见错误,如果它是常用的库会导致大的混乱,
  • 过度使用家属的范围,
  • 在将第三方图书馆放入Maven存储库之前对其进行验证的系统很薄弱,
  • 某些插件质量不够,
  • 某些工件的可用性问题,特别是来自Sun(导致许可证限制)

使用Maven还有心理方面的问题。对于在日常工作中使用Ant的人来说,切换到Maven尤其对于非HelloWorld项目来说尤其困难。其他人从Maven早期就有不好的经历,因为没有好的文档,书籍和较少的插件集。对于这些人来说,在Ant中他们的项目更容易。有些人不喜欢Maven的最后一个原因是无知。

我同意帕斯卡的观点,即“这么多人可能是盲目的错误”。我无法想象没有Maven的今天的Java世界。