Maven学习日志
1、初识Maven
1)传统开发项目问题
1)项目中有很多模块,模块之间有关系, 手工管理关系比较繁琐。
2)当需要很第三方功能,很多jar文时,需要手工从网络中获取各个jar
3)需要管理jar的版本, 你需要的是mysql.5.1.5.jar,你不能给mysql.4.0.jar
4)需要管理jar文件之间的依赖, 你的项目要使用a.jar 需要使用b.jar里面的 类,必须首先获取到b.jar才可以, 然后才能使用a.jar.
2)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.部署项目
3)Maven:项目的构建
1.清理,把之前项目编译的东西删除掉,为新的编译代码做准备
2.编译, 把程序源代码编译为执行代码,maven可以同时把成千上百的文件编 译为class。javac 不一样,javac一次编译一个文件
3.测试, maven可以执行测试程序代码,验证你的功能是否正确。maven同时执行多个测试代码,同时测试很多功能
4.报告,生成测试结果的文件, 测试通过没有
5.打包, 把你的项目中所有的class文件,配置文件等所有资源放到一个压缩文件中。这个压缩文件就是项目的结果文件, 通常java程序,压缩文件是jar扩展名的,对于web应用,压缩文件扩展名是.war
6.安装, 把5中生成的文件jar、war安装到本机仓库
7.部署, 把程序安装好可以执行
4)Maven的安装与配置
1.需要从maven的官网下载maven的安装包
2.解压安装包,解压到一个目录,非中文目录
子目录 bin :执行程序,主要是mvn.cmd
conf :maven工具本身的配置文件settings.xml
3.配置环境变量在系统的环境变量中,指定一个M2_HOME的名称,指定它的 值是maven工具安装目录(bin之前的目录),再把M2_HOME加入到path之 中,在所有路径之前加入 %M2_HOME%\bin;
4.验证,新的命令行中,执行mvn -v
注意:需要配置JAVA_HOME ,指定jdk路径
2、Maven核心概念
1.POM :一个文件 名称是pom.xml , pom翻译过来叫做项目对象模型,maven把一个项目当做一个模型使用。控制maven构建项目的过程,管理jar依赖。
2.约定的目录结构 : maven项目的目录和文件的位置都是规定的。
3.坐标 : 是一个唯一的字符串,用来表示资源。
4.依赖管理 : 管理你的项目可以使用jar文件
5.仓库管理(了解) :你的资源存放的位置
6.生命周期 (了解) : maven工具构建项目的过程,就是生命周期。
7.插件和目标(了解):执行maven构建的时候用的工具是插件
8.继承
9.聚合
3、Maven项目结构
1)目录结构
每一个maven项目在磁盘中都是一个文件夹(项目-Hello)
Hello/
—/src
------/main #放主程序java代码和配置文件
----------/java #你的程序包和包中的java文件
----------/resources #你的java程序中要使用的配置文件
------/test #放测试程序代码和文件的(可以没有)
----------/java #测试程序包和包中的java文件
----------/resources #测试java程序中要使用的配置文件
—/pom.xml #maven的核心文件(maven项目必须有)
注意:mvn compile 编译src/main目录下的所有java文件的。
2)仓库
1.仓库是 存放maven使用的jar 和我们项目使用的jar
maven使用的插件(各种jar)
项目使用的jar(第三方的工具)
2.仓库的分类
本地仓库, 即个人计算机上的文件夹,存放各种jar
远程仓库, 即在互联网上的,使用网络才能使用的仓库
①中央仓库,最权威的, 所有的开发人员都共享使用的一个集中的仓库:
https://repo.maven.apache.org
②中央仓库的镜像,即中央仓库的备份,在各大洲,重要的城市都有镜像
③私服,在公司内部,在局域网中使用的, 不是对外使用的。
3.仓库的使用,maven仓库的使用不需要人为参与
比如:开发人员需要使用mysql驱动—>maven首先查本地仓库—>私服—> 镜像—>中央仓库
3)pom:项目对象模型(xml文件)
1.坐标:唯一值, 在互联网中唯一标识一个项目的
<groupId>公司域名的倒写</groupId>
<artifactId>自定义项目名称</artifactId>
<version>自定版本号</version>https://mvnrepository.com/ 搜索使用的中央仓库, 使用groupId 或artifactId 作为搜索条件
2.packaging: 打包后压缩文件的扩展名,默认是jar ,web应用是war
3.依赖:dependencies 和dependency ,等同于是 在java代码中import项目 中要使用的各种资源说明, 比如项目要使用mysql驱动
<dependencies>
<!--依赖 java代码中 import -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version>
</dependency>
</dependencies>4.properties:设置属性
5.build : maven在进行项目的构建时, 配置信息,例如指定编译java代码使 用的jdk的版本等
4)maven生命周期, maven的命令,maven的插件
1.maven的生命周期:就是maven构建项目的过程,清理,编译,测试,报告, 打包,安装,部署
2.maven的命令:maven独立使用,通过命令,完成maven的生命周期的执行
3.maven的插件: maven命令执行时,真正完成功能的是插件,插件就是一些jar 文件, 一些类
















