首页 » Java程序员修炼之道 » Java程序员修炼之道全文在线阅读

《Java程序员修炼之道》12.1 与Maven 3相遇

关灯直达底部

Maven是流行的Java及JVM语言相关的构建工具,然而反对它的人和支持它的人态度同样坚决。它的设计理念是,严格的构建周期辅以强大的依赖管理是成功构建的必要条件。Maven不仅是构建工具,更是项目技术组件的管理工具。实际上,Maven的构建脚本叫做POM(Project Object Model,项目对象模型)文件。这些POM文件是用XML写的,并且每个Maven项目或模块都有一个pom.xml文件。

注意 POM文件中马上要加入对备选语言的支持,从而满足用户对灵活性的要求(就像Gradle提供的那些功能)。

Ant和Gradle怎么样?Ant是个流行的构建工具,特别是在早年的Java项目里。它作为公认的标准存在了相当长的一段时间。我们不准备在这里再讲了,因为之前已经有人讲过上百次了。更关键的是,我们觉得Ant没有强制实行通用的构建周期,也没有一组通用(强制的)构建目标。这就是说开发人员必须研究手头每个Ant构建的细节。如果你要用Ant,Ant网站(http://ant.apache.org)列出了所有必需的细节。Gradle是这一领域的新秀。它有意选择了和Maven相反的路线,限制不会那么严格,你可以按自己的方式声明构建过程。它也跟Maven一样提供依赖管理和很多其他特性。如果你想尝试下Gradle,可以访问Gradle网站(www.gradle.org)了解更多细节。要学习优秀的构建实践,Maven是适合的工具。它强制你遵循Maven构建周期,一旦掌握这个构建周期,你就可以轻松地构建世界上任何一个Maven项目。

Maven采取了惯例优先配置的策略,并希望你能融入到它的世界观,在源码该怎么布局、属性如何过滤等设置上都能接受它的安排。这可能会吓着某些开发人员,但Maven的构建周期是经过多年深思熟虑总结出来的,沿着它提供的路径走往往是最合理的。而对于那些极力反对墨守成规的人,Maven确实提供了覆盖默认值的办法,但那样会做出更加繁琐,并且标准化程度更低的构建脚本。

用Maven执行构建就是让它执行一个或几个目标(代表特定任务,比如编译源码、运行测试等)。目标都是绑到默认构建周期中的,如果你要求Maven执行测试(如mvn test),它会先编译源码和测试代码。简言之,它会强迫你遵守正确的构建周期。

如果你还没装Maven 3,请参见附录A中的A.2节。在完成下载和安装之后,再回到这里来创建你的第一个Maven项目。