网页后端开发(基础1--maven)
maven的作用:
Maven是一款管理和构建Java项目的工具。
1.依赖管理:
方便快捷的管理项目依赖的资源(jar包)
不用手动下载jar包,只需要中maven中引用,maven会查找本地仓库。若本地仓库没有,会直接向远端仓库发送下载请求,自动下载jar包。
Maven 仓库是存放构件的地方,主要分为两大类:本地仓库和远程仓库。
本地仓库
本地仓库是存放在用户计算机上的一个目录,Maven 在查找构件时首先会在本地仓库中查找。如果本地仓库中存在所需的构件,Maven 会直接使用它们。默认情况下,本地仓库位于用户目录下的 .m2/repository/ 目录中1。
远程仓库
如果本地仓库中没有找到所需的构件,Maven 会去远程仓库查找。远程仓库又可以分为三种:
中央仓库:这是 Maven 自带的远程仓库,包含了绝大部分开源的构件。当本地仓库没有所需的构件时,Maven 会尝试从中央仓库下载1。
私服:这是一个特殊的远程仓库,通常架设在局域网内,用来代理所有的外部远程仓库。私服可以节省带宽,提高下载效率,并且便于部署第三方构件1。
其他公共仓库:除了中央仓库和私服外,还有很多其他公开的远程仓库,如 java.net Maven 库和 JBoss Maven 库1。
maven中引用示例
<!--引入依赖--><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.4</version></dependency></dependencies>
若本地仓库没有,则会直接从远端仓库下载 org.springframework的jar包。
2.项目构建:
标准的跨平台的自动化项目构建方式(Linux,Window,MacOS)
在IDEA中创建maven文件,会自动化生成固定格式,并且附带生存期和插件。
3.统一项目结构:
提供标准,统一的项目结构
Java主流编译软件:Eclipse,MyEclipse,IntelliJ IDEA
这些软件生成的Java文件格式不同,无法相互导入。
使用maven即可解决,maven提供统一的标准,不同编译软件之间可以相互使用。
Maven核心
Maven概述:Maven是项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一段描述信息来管理项目的构建。
官网:https://mvnrepository.com/
Maven结构:pom.xml--->三部分:项目对象模型(POM),依赖管理模型,构建生命周期/阶段。
项目对象模型(POM)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.cyyWeb</groupId><artifactId>maven-project01</artifactId><version>1.0-SNAPSHOT</version><!--SNAPSHOT是开发中的版本--><!--Release是正式版本--><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>
</project>
pom由
<groupId>org.cyyWeb</groupId>
<artifactId>maven-project01</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>组成。
<groupId>org.cyyWeb</groupId>
<artifactId>maven-project01</artifactId>
<version>1.0-SNAPSHOT</version>是项目的基本信息。其中
groupId是当前Maven项目隶属的组织名称,通常为域名反写。
artifactId是当前Maven项目的名称。
version用来定义当前的版本号。(SNAPSHOT是开发中的版本,Release是正式版本)
<properties>.........</properties>表示JDK的信息,包含JDK的版本。此实验使用JDK17进行实验。
依赖管理模型
<!--引入依赖--><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.4</version></dependency></dependencies>
<dependencies>
<dependency>
<groupId>..........</groupId>
<artifactId>.........</artifactId>
<version>.......</version>
</dependency>
</dependencies>用来引入依赖,即导入jar包。本地仓库没有时,自动访问远端仓库进行下载。
构建生命周期/阶段
、
生命周期与插件紧密联系,运行什么生命周期,调用相对应的插件。
Maven的依赖管理
依赖配置
配置
1.编写<dependencies> </dependencies>标签
2.在<dependencies> </dependencies>中,使用<dependency> </dependency>引入坐标
3.定义坐标的<groupId>....</groupId>,<artifactId>....</artifactId>,<version>..</version>
groupId是引入依赖的组织名称。
artifactId是引入依赖的名称。
version用来定义引入依赖的版本号。
4.点击刷新,引入最新加入的坐标。
若不知道依赖的坐标,可以访问官网查找。
官网:https://mvnrepository.com/
排除依赖
排除依赖:指主动断开依赖的资源,被排除的资源无需指定版本。
在<dependency> </dependency>中使用<exclusions>..</exclusions>排除依赖。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.cyyWeb</groupId><artifactId>maven-project01</artifactId><version>1.0-SNAPSHOT</version><!--SNAPSHOT是开发中的版本--><!--Release是正式版本--><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!--引入依赖--><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.4</version><!--排除依赖--><exclusions><exclusion><groupId>io.micrometer</groupId><artifactId>micrometer-observation</artifactId></exclusion></exclusions></dependency></dependencies></project>
注意事项
1.一旦依赖配置变更了,需要重新加载
2.引入的依赖本地仓库不存在时,需要联网在远端仓库进行下载。
生命周期
Maven的生命周期是为了对所有Maven项目构建过程进行抽象和统一。
Maven有三套相互独立的生命周期:
clean:清理工作。
default:核心工作,如:编译,测试,打包,安装,部署等。
site:生成报告
每套生命周期都包含一些阶段,阶段是有顺序的,后面的阶段依赖于前面的阶段。
在同一套生命周期中,当后面阶段运行时,前面的阶段也会运行。
例如:当运行install时,dsfault要从validate运行至install
执行生命周期的两种方式:
1.在idea中,右侧的maven工具栏,选择对应的生命周期,双击运行。
2.在命令行中,通过命令执行。
在项目文件夹中,在上方文件目录中输入cmd,回车。
在命令行中输入mvn clean,执行清理工作。
生命周期与插件:
在执行生命周期时,其本质是调用了对应的插件,完成工作。