Maven

一、Maven简介

1、Maven介绍

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

1)传统开发项目的问题,没有使用maven管理的项目

① 很多模块,模块之间有关系,手动管理关系,比较繁琐
② 需要很多第三方功能,需要很多jar文件,需要手动从网络中获取各个jar
③ 需要管理jar的版本
④ 管理jar文件之间的依赖,例如,项目要使用a.jar需要使用b.jar中的类,必须先获取到b,jar才可以。
		a.jar需要b.jar这个关系叫做依赖。

2)maven的作用

① maven可以管理jar文件
② 自动下载jar和它的文档、源代码
③ 管理jar直接的依赖,a.jar需要b.jar,maven会自动下载b.jar
④ 管理需要的jar版本
⑤ 帮助编译程序,把java编译成class
⑥ 测试代码是否正确
⑦ 帮助打开文件,形成jar文件,或者war文件
⑧ 帮助部署项目

2、项目的构建

构建是面向过程的,就是一些步骤,完成项目代码的编译,测试,运行,打包,部署等待。

maven支持的构建包括有:

① 清理:把之前项目编译的东西删除,为新的编译代码做准备。

② 编译:把程序源代码编译为执行代码,java-class文件(批量的)
	maven可以同时把上万的文件编译为class,与javac不同,javac一次编译一个文件

③ 测试:maven可以执行测试程序代码,验证功能是否正确(批量的)

④ 报告:生成测试结果的文件,测试是否通过

⑤ 打包:把项目中所有的class文件,配置文件等所有资源放到一个压缩文件中。
	这个压缩文件就是项目的结果文件,通常java程序,压缩文件是jar扩展名的,对于web应用,压缩文件扩展名是.war

⑥ 安装:把⑤中生成的文件jar、war安装到本机仓库

⑦ 部署:把程序安装好可以执行

3、Maven核心概念

① POM:是一个文件,名称是pom.xml,pom翻译过来叫做项目对象模型。
		maven把一个项目当作一个模型使用,控制maven构建项目的过程,管理jar依赖。

② 约定的目录结构:maven项目的目录和文件的位置都是规定的。

③ 坐标:是一个唯一的字符串,用来表示资源的

④ 依赖管理:管理项目使用的jar文件

⑤ 仓库管理(了解):资源的存放位置

⑥ 生命周期(了解):maven工具构建项目的过程,就是生命名周期

⑦ 插件和目标(了解):执行maven构建的时候用的工具是插件

⑧ 继承:父子关系

⑨ 聚合:几个项目归纳到一起

二、Maven的核心概念

1、Maven工程约定目录结构

每一个maven项目在磁盘中都是一个文件夹(例如项目-Hello)

Hello/
	---/src					源代码
	------/main					放主程序java代码和配置文件
	---------/java					主程序包和包中的java文件(主程序的java源码)
	---------/resources				java程序中要使用的配置文件

	------/test					放测试程序代码和文件(可以没有)
	---------/java					测试程序包和包中的java文件
	---------/resources				测试java程序中要使用的配置文件

	---/pom.xml				maven的核心文件(maven项目必须有)

2、设置本机存放资源的目录位置(设置本机仓库)

1)修改maven的配置文件,maven安装目录/conf/settings.xml(先备份settings.xml)

2)修改 指定目录(不要使用中文目录)

3)D:\JavaWeb\Maven\maven_repository


3、仓库

1)仓库是什么:仓库是存放东西的,存放maven使用的jar和项目使用的jar

maven使用的插件(各种jar)
项目使用的jar(第三方的工具)

2)仓库的分类

本地仓库:就是个人计算机上的文件夹,存放各种jar
远程仓库:在互联网上的,使用网络才能使用的仓库
		① 中央仓库:最权威的,供所有开发人员共享使用的一个集中的仓库。
			http://repo.maven.apache.org		中央仓库的地址
		② 中央仓库的镜像:就是中央仓库的备份
		③ 私服:在公司内部,在局域网中使用的

3)仓库的使用,maven仓库的使用不需要认为参与

例如开发人员使用mysql驱动:
	maven首先查本地仓库--->私服--->镜像--->中央仓库

4、 pom文件

Project Object Model项目对象模型,Maven把一个项目的结构和内容抽象成一个模型,在xml文件中进行声明,以方便进行构建和描述,pom.xml是Maven的灵魂。

1)基本信息
在这里插入图片描述
在这里插入图片描述

groupId、artifactId、version三个元素生成了一个Maven项目的基本坐标(唯一标识)。

<groupId>公司域名的倒写</groupId>
<artifactId>自定义项目名称</artifactId>
<version>自定义版本号<version>

https://mvnrepository.com/ :搜索使用的中央仓库,使用groupId或者artifactId作为搜索条件。

2)依赖、配置属性、构建、继承、聚合
在这里插入图片描述在这里插入图片描述

依赖举例如下

<dependencies>
	<!--依赖 java代码中import-->
	<dependency>
		<groupId>mysql</groupId>
		<artifacrId>mysql-connector-java</artifactId>
		<version>5.1.9</version>
	</dependency>
</dependencies>

5、 Maven的生命周期、 Maven的命令、Maven的插件

maven的生命周期:

就是maven构建项目的过程,清理,编译、测试、报告、打包、安装、部署。

maven的命令:

maven独立使用,通过命令,完成maven的生命周期的执行,可以使用命令,完成项目的清理、编译、测试等。

maven的插件:

maven命令执行时,真正完成功能的是插件,插件就是一些jar文件(一些类)。

在这里插入图片描述
补maven命令

mvn compile
	编译main/java/目录下的java为class文件,同时把class拷贝到target/classes目录下面;把main/resources目录下的所有文件都拷贝到target/classes目录下
mvn package
	打包的只是src/main中的所有文件
mvn install
	把项目打包成工具保存到本地仓库,以便之后的项目可以使用

build:

控制配置maven构建项目的参数设置,设置jdk的版本

<build>
	<!--配置插件-->
	<plugins>
		<!--配置具体的插件-->
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<!--插件的名称-->
			<artifactId>maven-compiler-plugin</artifactId>
			<!--插件的版本-->
			<version>3.8.1</version>
			<!--配置插件的信息-->
			<configuration>
				<!--告诉maven写的代码是在jdk1.8上编译的-->
				<source>1.8</source>
				<!--程序应该运行在1.8的jdk上-->
				<target>1.8</target>
			</configuration>
		</plugin>
	</plugins>
</build>

三、Maven在IDEA中应用

1、在idea中设置maven,让idea和maven结合

idea中内置了maven,一般不使用内置的,因为用内置修改maven的设置不方便。使用安装的maven,需要覆盖idea中默认的设置,让idea指定maven安装位置等信息。

配置的入口:
	① 配置当前工程的设置,file---settings---build,Excution,Deployment---Build Tools---Maven
		Maven Home path:maven的安装目录
		User Settings File:就是maven安装目录cinf/setting.xml配置文件
		Local Repository:本机仓库的目录位置

在这里插入图片描述
在这里插入图片描述
-DarchetypeCatalog=internal,maven项目创建时,会联网下载模板文件,比较大,使用它,不用下载,创建maven项目速度快。

	② 配置以后新建工程的设置,file---New Projects Settings---Set for new projects
		具体与上述相同

2、使用模板创建项目

1)maven-archetype-quickstart:普通的java项目

在这里插入图片描述
2)maven-archetype-webapp:web项目

在这里插入图片描述
3)IDEA中导入已有的Maven工程(module)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


四、依赖管理

1、依赖的范围 - - - 使用scope表示

scope的值有:compile、test、provided- - - 默认是compile

scope:表示依赖使用的范围,也就是在maven构建项目的哪些阶段中起作用。
	maven构建项目:编译,测试,打包,安装,部署过程(阶段)。

在这里插入图片描述


五、Maven常用设置

1、maven的属性设置

<properties>设置maven的常用属性

例如:

<properties>
    <!--maven构建项目使用的是UTF-8,避免中文的乱码-->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!--编译java代码使用的jdk版本-->
    <maven.compiler.source>1.8</maven.compiler.source>
    <!--java项目应该运行在什么样的jdk版本-->
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

2、maven自定义全局变量

自定义的属性:

① 在<properties>中通过自定义标签声明变量(标签名就是变量名)
② 在pom.xml文件中的其他位置,使用 ${标签名} 使用变量的值

自定义全局变量一般是定义依赖的版本号,当你的项目中要使用多个相同的版本号,先使用全局变量定义,再使用${变量名}

举例如下:
<properties>中
在这里插入图片描述
<dependencies>中
在这里插入图片描述


3、资源插件

在这里插入图片描述
作用:mybatis课程中会用到这个作用

① 默认没有使用resources的时候,maven执行编译代码时,会把src/main/resources目录中的文件拷贝到target/classes目录中;
	对于src/main/java目录下的非java文件不处理,不拷贝到target/classes目录中。
② 程序有需要把一些文件放到src/main/java目录中,当执行java程序时,需要用到src/main/java目录中的文件;
	需要告诉maven再mvn compile src/main/java目录下的程序时,需要把文件一同拷贝到target/classes目录中;
	此时就需要再<build>中加入<resources>。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值