(一)《Maven实战》读书笔记 —— Maven简介

原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/flyingweb/p/8478044.html

第一章:Maven简介

一、何为Maven?

Maven这个词可以翻译为“知识的积累”,本书将介绍Maven这一跨平台的项目管理工具。作为Apache组织中的一个颇为成功的开源项目,Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。

 

(一)Maven是优秀的——项目构建工具

要理解何为Maven,首先得理解何为构建。构建是我们每一位程序员每天都在做的工作,除了编写代码,我们每天有相当一部分时间花在了清理、编译、测试、生成文档、打包和项目部署等繁琐的工作上,这就是构建(build)

Maven是一个异常强大的构建工具,能够帮助我们自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署。我们不需要也不应该一遍遍地输入指令和点击鼠标,我们要做的是使用Maven配置好项目,然后输入简单的命令(如man clean install),Maven会帮我们处理那些繁琐的任务。

Maven抽象了一个完整的构建生命周期模型,并且为绝大部分的构建任务提供了已实现的插件。只要遵循这个模型,就可以避免很多不必要的错误,可以直接使用大量成熟的Maven插件来完成我们的任务。此外,如果有非常特殊的需求,我们亦可以轻松实现自己的插件。

Maven作为构建工具,不仅能帮助我们自动化构建,还能够抽象构建过程,提供构建任务实现;它跨平台,对外提供一致的操作接口(标准化构建过程),这一切足以使它成为优秀的、流行的构建工具。

(二)Maven是出色的——项目依赖管理工具

在这个开源的年代里,几乎任何Java应用都会借用一些第三方的开源类库,这些类库都可以通过依赖的方式引入到项目中来。随着依赖的增多,版本的不一致、版本冲突、依赖臃肿等问题都会接踵而来。手工解决这些问题变得十分枯燥,幸运的是Maven提供了一个优秀的解决方案,它通过一个坐标系统准确的定位每一个构件(artifact),也就是通过一组坐标Maven能够找到任何一个Java类库。Maven给这个类库世界引入经纬,让它们变得有秩序。

Maven还为全世界的Java开发者提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源类库。通过一些Maven的衍生工具(如Nexus),我们还能对其进行快速的搜索,只要定位了坐标,Maven就能够帮我们自动下载,省去手工的麻烦。

(三)Maven还是——项目信息管理工具

Maven还能够帮助我们管理那些原本分散在项目中各个角落的项目信息,包括项目描述、开发者列表、版本控制系统地址、许可证、缺陷管理系统地址等。为我们节省了大量寻找信息的时间。

除了直接的项目信息,通过Maven自动生成的站点,以及已有的一些插件,我们可以轻松的获取项目文档、测试报告、静态分析报告、源码版本日志报告等非常具有价值的项目信息。

另外,使用Maven还有一个额外的好处,Maven对项目的目录结构、测试用例命名方式等内容都有既有的约定规则,只要遵循了这些成熟的规则,用户在项目间切换的时候就免去了额外的学习成本,可以说是约定优于配置(Convention Over Configuration)

二、为什么需要Maven

Maven不是Java领域唯一的构建管理解决方案。本节将通过一些简单的例子解释Maven的必要性,并介绍其他的构建解决方案,如IDE、Make和Ant,并将它们与Maven进行比较。

(一)为什么不是自定义构建系统

使用脚本建立高度自定义的构建系统(重复发明轮子),耗时费力,结果也不一定很好。当然,你可以享受从无到有的乐趣,但恐怕实际项目中无法给你那么多的时间。使用Maven省时省力,并能够得到成熟的构建系统,还能得到来自于Maven社区的大量支持。Maven是开源的,你无须为此付费。如果你有兴趣,你还能去了解Maven是如何工作的。

(二)为什么不是IDE

使用简单的文本编辑器和命令行也能够完成绝大部分的开发工作,但很少有人愿意一直这样做。

虽然,我们无法否认优秀的IDE能够大大的提高开发效率。主流的IDE(如eclipse)都提供了强大的文本编辑、调试甚至重构功能。但是,IDE是有天生缺陷的(IDE不是万能的):

  • IDE依赖大量的手工操作。编译、测试、代码生成等工作都是相互独立的,很难一键完成所有工作。
  • 很难在项目中统一所有的IDE配置,每个人都有自己的喜好。也正是由于这个原因,一个在机器A的IDE上可以运行的任务,到了机器B的IDE中可能就会失败。

我们应该合理的利用IDE,而不是过多的依赖它。对于构建这样的任务,在IDE中一次次地点击鼠标是愚蠢的行为。Maven是这方面的专家,而且主流的IDE都集成了Maven,我们可以在IDE中方便地运行Maven执行构建。

(三)为什么不是Make

Make也许是最早的构建工具,它是由Stuart Feldman于1977年在Bell实验室创建。目前Make有很多衍生实现,包括最流行的GUN Make 和BSD Make,还有Windows平台的Microsoft nmake等。

Make由一个名为Makefile的脚本文件驱动,该文件使用Make自己定义的语法格式。Make通过一系列的目标(Target)和依赖(Prerequisite)将整个构建过程串联起来,同时利用本地命令(Command)完成每个目标的实际行为。Make的强大之处在于它利用所有系统的本地命令,尤其是UNIX/Linux系统,丰富的功能、强大的命令能够帮助Make快速高效地完成任务。

但是,Make将自己和操作系统绑定在一起。也就是说,使用Make很难实现跨平台的构建,这对于Java来说是非常的不友好的。此外,Makefile的语法也成问题,很多人抱怨Make构建失败的原因往往是一个很难发现的空格或者Tab使用错误。

(三)为什么不是Ant

Ant意指“另一个简洁的工具”(Another Neat Tool),它最早用来构建著名的Tomcat,其作者James Duncan Davidson创建它的动机就是因为受不了Makefile的语法格式。我们可以将Ant看成是一个Java版本的Make,也正因为使用了Java,Ant是跨平台的。此外,Ant使用XML定义构建脚本,相对于Makefile来说,这也更加友好。Ant有大量内置的用Java实现的任务,这保证了其跨平台的特质,同时,Ant也有特殊的任务exec来执行本地命令。

和Make一样,Ant也都是过程式的,开发者显式地指定每一个目标,以及完成该目标所需要执行的任务,针对每一个项目,开发者都需要重新编写这一过程这里其实隐含着很大的重复(重复发明轮子)。Maven是声明式的,项目构建过程和过程各个阶段所需的工作都由插件实现,并且大部分插件都是现成的,开发者只需声明项目的基本元素,Maven就指定内置的、完整的构建过程,这在很大程度上消除了重复。

Ant是没有依赖管理的,所以很长一段时间Ant用户都不得不手工管理依赖,这是一个令人头疼的问题。幸运的是,Ant用户现在可以借助Ivy管理依赖。对于Maven来说,依赖管理是理所当然的,Maven不仅内置了依赖管理,更有一个可能拥有全世界最多Java开源软件包的中央仓库,Maven用户无须进行任何配置就可以直接享用。

(四)不要重复发明轮子

不要重复发明轮子,Maven已经有一大把现成的插件,全世界都在用,你自己不用写任何代码!为什么没有人说“我自己写的代码最灵活,所以我不用Spring,我自己实现IoC;我不用Hibernate,我自己封装JDBC”?

【END】

转载于:https://www.cnblogs.com/flyingweb/p/8478044.html

好书推荐-《Maven实战 简介: 内容推荐 本书由国内社区公认的Maven专家Juven Xu亲自执笔,内容的权威性毋庸置疑。 本书是国内第本公开出版的Maven专著。它内容新颖,基于新发布的Maven 3.0,不仅详尽讲解了Maven 3.0的所有新功能和新特性,而且还将这些新功能和新特性与Maven 2.x版本进行了对比,以便于正在使用Maven 2.x版本的用户能更好地理解。本书它内容全面,以从专家的角度阐释Ma 阅读详情

相关推荐

Java核心技术学习笔记——进阶——第Maven——1.2 Maven基础概念和实战

1. 检查和安装Maven 2. Maven基础概念 3. Maven编译工作流程 4. POM (Project Object Model) 5. Maven Repository (仓库) 6. Maven项目的目录结构 7. 创建Maven项目 修改POM,添加JAR依赖 8. Maven编译 9. Maven构建生命周期 10. 进步研究(参考书籍) ...

预见未来to50的专栏 189

Maven实战读书笔记):Maven概述

1.1 Maven是什么,能做什么 Maven个跨平台的项目管理工具,主要服务于Java平台的项目构建、依赖管理和项目信息管理。 Maven的用途之是项目构建,能够自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署,只需要输入简单命令即可(如mvn clean install)Maven不仅是构建工具,还是依赖管理工具和项目信息管理工具,通过提供中央仓库,自动帮我们下...

159

Maven实战读书笔记

Maven是什么 1. 构建工具 实现自动化构建,从清理、编译、测试、生成报告、打包、部署; 大程度消除重复构建、抽象了构建生命周期、为绝大多数的构建任务提供了已实现的插件。 2. 项目信息管理工具 管理分布在项目各个角落的各种信息:项目描述、开发者列表、版本控制系统地址、许可证、缺陷管理系统地址等等; 已有插件的项目文档、测试报告、静态分析报告、源码版本日志报告等 3. 免费的中央仓库 4. 项目规范 定义了项目目录结构、测试用例命名方式等既定规则,降低项目切换时的学习成本 .

一不小心吃太撑了 267

Maven实战读书笔记Maven简介

章:Maven简介 1.Maven主要服务于基于java平台的项目构建,依赖管理和项目信息管理。 2.Maven抽象了个完整的构建生命周期模型,这个模型吸取了大量其他的构建脚本和构建工具的优点,总结了大量项目的实际需求。 3.Maven还有个优点,它能帮助我们标准化构建过程。 第二章:Maven的安装和配置 1.在Windows上的安装 (1)...

... 140

maven实战读书笔记

1、在windows环境下,安装完maven之后,需要配置3个环境变量 path、M2_HOME、MAVEN_OPTS 其中前2个是必须的,MAVEN_OPTS变量配置以后,可以避免些场景下的内存溢出 般配置为MAVEN_OPTS:-Xms128m -Xmx512m 2、将%M2_HOME%/conf/settings.xml,复制到%USER_HOME%/.m2/下 3、对于公司内

kyfxbl 805

Maven实战读书笔记()

Maven简介 Maven主要服务于基于java平台的项目构建、依赖管理和项目信息管理。 日常开发活动中,般只需要输入mvn clean install即可,唯的要求就是按照maven的要求来编程序。 maven还有个优点,标准化构建过程,减少团队学习成本 maven通过做不系统准确定位每个构件,提供了依赖管理的能力 maven比ide,makefile,ant都要强,简单

softwarehe的专栏 846

maven实战读书笔记

环境变量设置 MAVEN_HOME:G:\maven-3.2\apache-maven-3.2.5 Path: G:\maven-3.2\apache-maven-3.2.5\bin 其实正确的设置应该是 : path:%GRADLE_HOME%\bin 这样将path配置成动态,不用每次修改对不对。 小想法:另外用windows开发是不是low爆了???我也想换...

weixin_30917213的博客 107

maven实战 读书笔记

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33998125的博客 96

maven实战 读书笔记#高级程序员进阶之路#

第1章 Maven简介 maven种优秀强大的构建工具,帮助我们自动化构建过程,从清理、编译、测试、生产报告、打包再到部署。maven主要服务于java平台的项目构建、依赖管理等。 maven通过坐标体系唯的定位到个构件(artifact)。 maven为全世界的java开发者提供了个免费的中央仓库;它的衍生工具(如nexus),可以帮助我们进行快速的搜...

weixin_33860147的博客 124

Maven简介以及Maven安装配置

打开IDEA,点击菜单栏中的【File】选择【New Projects Settings】选择【Settings For New Projects】进入IDEA配置,找到【Build,Execution,Deployment】菜单栏中的【Build Tools】中找到Maven。那么我们可以将需要的依赖项的信息编Maven工程的配置文件,Maven软件就会自动下载并复制这些依赖项到项目中,也会自动下载依赖需要的依赖!通过 Maven,我们可以方便地维护项目所依赖的外部库,而我们仅仅需要编配置即可。

2301_80309994的博客 2085

Maven简介,安装,配置】

打开IDEA,点击菜单栏中的【File】选择【New Projects Settings】选择【Settings For New Projects】进入IDEA配置,找到【Build,Execution,Deployment】菜单栏中的【Build Tools】中找到Maven。那么我们可以将需要的依赖项的信息编Maven工程的配置文件,Maven软件就会自动下载并复制这些依赖项到项目中,也会自动下载依赖需要的依赖!通过 Maven,我们可以方便地维护项目所依赖的外部库,而我们仅仅需要编配置即可。

shuai_ge_yang的博客 1245

Maven简介

Maven是什么 Maven的本质是个项目管理工具,(Mavenjava语言编的,所以Maven管理的东西,都已面向对象的方式进行设计),将项目开发和管理过程抽象成个项目模型(POM) POM(Project Object Model):项目对象模型 过程个项目就是个对象,通过pom.xml配置文件,Maven就可以知道项目信息,Maven管理资源要用到依赖管理,依赖管理用到的资源来自本地(本地仓库),依赖管理的东西终来自中央仓库。Maven提供了多个插件,..

weixin_60719453的博客 4370

Maven 简介

Maven款为 Java 项目管理构建、依赖管理的工具(软件),使用 Maven 可以自动化构建、测试、打包和发布项目,大大提高了开发效率和质量。Maven 就是个软件,掌握安装、配置、以及基本功能(项目构建、依赖管理)的理解和使用即可!Maven 可以管理项目的依赖,包括自动下载所需依赖库、自动下载依赖需要的依赖并且保证版本没有冲突、依赖版本管理等。通过 Maven,我们可以方便地维护项目所依赖的外部库,避免版本冲突和转换错误等,而我们仅仅需要编配置即可。

青年有志 1237

Maven简介Maven私服

更多精彩技术分享请浏览本博客:https://blog.csdn.net/wohiusdashi 目录 1. Maven简介 1.1. 简述 1.2. Maven实现的核心价值 1.3. 定义与缩略语 1.4. 项目构建 1.5. 依赖管理 1.6. maven目录明 1.7. maven坐标 ...

不甘于平凡的溃败的博客 2万+
上一篇: (二)文档对象模型(DOM),你只需知道这些就够了!
下一篇: (二)《Maven实战》读书笔记 —— Maven安装和配置
dcly32014
博客等级 码龄12年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值