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 文件, 一些类