目录
maven 是什么
maven 是自动化构建工具。 他就是一个软件,我们需要下载使用,就和qq软件一样使用就可以了。
传统项目开发存在的问题
一个项目做成一个工程,造成工程比较庞大,需要使用多模块来划分项目;
项目中需要的数量众多的 jar 包,需要手动下载并引入,并且多个项目需要的 jar 包存在重复的问题;
项目中需要的 jar 包有版本兼容的问题,需要手动解决;
项目中需要的 jar 包又依赖其它的 jar 包,需要手动解决。
maven帮你做的事情
1)maven可以管理jar文件
2)自动下载jar和他的文档,源代码
3)管理jar直接的依赖, a.jar需要b.jar , maven会自动下载b.jar
4)管理你需要的jar版本
5)帮你编译程序,把java编译为class
6)帮你测试你的代码是否正确。
7)帮你打包文件,形成jar文件,或者war文件
8)帮你部署项目
Maven项目类型
问题:
我们希望使用maven工具将我们自己的项目打包,打包后将资源存储到
maven的本地仓库中给其他人使用,这样就意为着,maven需要能够识别我们创建的项目结构体系,这样才能进行资源的打包。但是maven是
第三方的工具,maven本身是无法识别我们目前通过IDE工具创建的 JAVASE和JAVAEE的项目体系的,怎么办?
解决:
我们创建的项目需要是Maven能够识别的项目,我们需要通过maven来创建项目不就可以了。
实现:
POM类型:讲到再说
WAR类型:相当于JAVAEE项目
JAR类型:想当于JAVASE项目
Maven项目类型和JAVASE项目和JAVAEE项目的关系
1. 问题:
既然我们现在创建项目是通过maven工具来进行创建的,但是项目开发完成后
运行项目的不是maven。比如web项目,以前我们直接使用IDE工具创建一个
tomcat服务器能够直接识别的web项目结构,完成功能开发,等开发完成后, 我们可以直接将项目放到tomcat服务器中运行,但是使用maven创建的项目
结构和原有的web项目结构完全不同,那么我们开发完成后项目怎么放到tomcat中运行呢?
2. 解决:
maven是个项目资源管理工具,只做资源的管理,不参与项目的运行的。
那么是不是在项目开发阶段使用maven管理的时候是maven能够识别的
结构体系,在运行阶段是jdk或者tomcat能够识别的结构体系,岂不是很爽
美滋滋。
3. 实现:
因为项目运行的是编译后的内容,不是源码文件。这样虽然maven项目源码的结构体系和JAVASE,JAVAEE的都不同,但是它们编译后的项目结构体系就是相同的不就可以了。
构建: 项目的构建。
构建是面向过程的,就是一些步骤,完成项目代码的编译,测试,运行,打包,部署等等。
maven支持的构建包括有:
1.清理, 把之前项目编译的东西删除掉,我新的编译代码做准备。
2.编译, 把程序源代码编译为执行代码, java-class文件
批量的,maven可以同时把成千上百的文件编译为class。
javac 不一样,javac一次编译一个文件。
3.测试, maven可以执行测试程序代码,验证你的功能是否正确。
批量的,maven同时执行多个测试代码,同时测试很多功能。
4.报告, 生成测试结果的文件, 测试通过没有。
5.打包, 把你的项目中所有的class文件,配置文件等所有资源放到一个压缩文件中。
这个压缩文件就是项目的结果文件, 通常java程序,压缩文件是jar扩展名的。
对于web应用,压缩文件扩展名是.war
6.安装, 把5中生成的文件jar,war安装到本机仓库
7.部署, 把程序安装好可以执行。
maven核心概念: 用好maven,了解这些概念
①POM : 一个文件 名称是pom.xml , pom翻译过来叫做项目对象模型。
maven把一个项目当做一个模型使用。控制maven构建项目的过程,管理jar依赖。
就是通过这个 完成对项目的 测试,打包,安装,部署
②约定的目录结构 : maven项目的目录和文件的位置都是规定的。
③坐标 : 是一个唯一的字符串,用来表示资源的。
④依赖管理 : 管理你的项目可以使用jar文件
⑤仓库管理(了解) :你的资源存放的位置
⑥生命周期 (了解) : maven工具构建项目的过程,就是生命周期。
⑦插件和目标(了解):执行maven构建的时候用的工具是插件
⑧继承
⑨聚合
讲maven的使用,先难后易的。 难是说使用maven的命令,完成maven使用 , 在idea中直接使用maven,代替命令。