1.概述
2.使用Maven的背景
(1)一个项目就是一个工程
如果项目非常庞大,就不适合继续使用package来划分模块,最好是每一个模块对应一个工程,利于分工协作。
借助于Maven就可以将一个项目拆分成多个工程
(2)项目中需要的jar包必须手动“复制”,"粘贴"到WEB-INF/lib目录下
带来的问题是:同样的jar包重复出现在不同的项目工程中,一方面浪费存储空间,另外也让工程比较臃肿。
借助于Maven,可以将jar包仅仅保存在"仓库"中,有需要使用的工程引用这个文件接口,并不需要真的把jar包复制过来
(3)jar包需要别人替我们准备好,或到官网下载
不同技术的官网提供jar包下载的形式是五花八门的。
有些技术的官网就是通过Maven或SVN等专门的工具来提供下载的。
如果是以非正规的方式下载的jar包,那么其中的内容很可能也是不规范的。
借助于Maven可以以一种规范的方式下载jar包,因为所有知名框架或第三方工具的jar已经按照统一的规范存在了Maven的中央仓库中。以规范的方式下载的jar包,内容也是可靠的。
(4)一个jar包依赖其他jar包需要自己手动加入到项目中
如果所有的jar包之间的依赖关系都需要程序员自己非常清楚了解,那么就会极大增加学习成本。
jar包往往不是孤立存在的,很多jar包都需要在其他jar包的依赖下才能正常工作,我们称之为jar包的依赖关系。
例如:commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar,如果没有IO包,FileUpload包就不能正常工作。
Maven会自动将被依赖的jar包导入进来
3.Maven是什么
(1)Maven是一款服务于Java平台的自动化构建工具
(2)构建
概念:以"Java源文件"、"框架配置文件"、"JSP"、"HTML"、"图片"等资源为原材料,去生产一个可以运行的项目的过程。
- 编译
- 部署
- 搭建
编译:Java源文件【user.java】->编译->Class字节码文件【User.class】->交给JVM去执行
部署:一个BS项目最终运行的并不是动态Web工程本身,而是这个动态Web工程"编译的结果"
生的鸡 ->处理->熟的鸡
动态Web工程->编译,部署->编译结果
在开发过程中,所有的路径或配置文件中配置的类路径等都是以编译结果的目录结构为标准的
上面的画框的是运行时环境,其实是一组jar包的引用,并没有把jar包本身复制到工程中,所以并不是目录。
(3)构建过程
- 清理 将以前编译得到的旧的class字节码文件删除,为下一次编译做准备
- 编译 将Java源程序编程成class字节码文件
- 测试 自动测试,自动调用JUnit程序
- 报告 测试程序执行的结果
- 打包 动态web工程打war包,Java工程打jar包
- 安装 Maven特定的概念,将打包得到的文件复制到“仓库”中的指定位置
- 部署 将动态web工程生成的war包复制到Servlet容器指定的目录下,使其可以运行
(4)自动化构建