1. 核心功能
1.1 Maven作为依赖管理工具
解决痛点:项目中需要使用的jar包会越来越多,并且多个jar包之间也存在相互依赖关系,jar 包之间有可能产生冲突。进一步增加了在 jar 包使用过程中的难度。
1.2 Maven作为构建管理工具
构建的包可以脱离IDE执行构建操作。
2. 依赖
对jar包的管理
Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题,使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中,避免出现版本冲突和依赖缺失等问题。
我们通过定义 pom.xml 文件,Maven 能够自动解析项目的依赖关系,并通过 Maven 仓库自动下载和管理依赖,从而避免了手动下载和管理依赖的繁琐工作和可能引发的版本冲突问题。
jar包仓库 :https://mvnrepository.com/
<?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>com.mvn</groupId>
<artifactId>ssm-spring-part</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.23</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.18</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.27</version>
<scope>test</scope>
</dependency>
</dependencies>
3. 构建
对项目的管理
项目构建是指将源代码、配置文件、资源文件等转化为能够运行或部署的应用程序或库的过程!
使用 Maven 可以自动化构建、测试、打包和发布项目,提高开发效率和质量。
构建命令周期:
构建生命周期可以理解成是一组固定构建命令的有序集合,触发周期后的命令,会自动触发周期前的命令!也是一种简化构建的思路!
-
清理周期:主要是对项目编译生成文件进行清理
包含命令:clean
-
默认周期:定义了真正构件时所需要执行的所有步骤,它是生命周期中最核心的部分
包含命令:compile - test - package - install / deploy
-
报告周期
包含命令:site
打包: mvn clean package 本地仓库: mvn clean install
最佳使用方案:
打包: mvn clean package
重新编译: mvn clean compile
本地部署: mvn clean install
周期,命令和插件:
周期→包含若干命令→包含若干插件!
使用周期命令构建,简化构建过程!
最终进行构建的是插件!
插件配置:
<build>
<!-- jdk17 和 war包版本插件不匹配 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
</plugins>
</build>
对java项目:构建打包为jar包。
<packaging>jar</packaging>
对web项目:构建打包为war包。
<packaging>war</packaging>
4.继承
依赖角度:在project(父工程)中统一管理module(子工程)的依赖。
-
父工程
<!--gav后必须声明<packaging>为**pom**--> <packaging>pom</packaging>
-
子工程
<!-- 指定父工程坐标 体现继承关系 --> <parent> <groupId>com.mvn</groupId> <artifactId>ssm-spring-part</artifactId> <version>1.0-SNAPSHOT</version> </parent> <!-- 子工程坐标 --> <artifactId>...</artifactId>
-
依赖的管理
-
父工程
<!-- 使用dependencyManagement标签配置对依赖的管理 --> <!-- 被管理的依赖并没有真正被引入到工程 --> <dependencyManagement> <dependencies> <dependency> <groupId>com.mvn</groupId> <artifactId>ssm-spring-part</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> </dependencyManagement>
<properties> <!-- 创建自定义属性标签统一管理版本 定义变量 --> <atxx.dependency.version>版本号</atxx.dependency.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>com.mvn</groupId> <artifactId>ssm-spring-part</artifactId> <version>${atxx.dependency.version}</version> </dependency> </dependencies> </dependencyManagement>
-
子工程
<!-- 子工程可以不声明版本,默认继承父工程版本 --> <!-- 子工程声明版本时,会覆盖父工程版本 --> <dependencies> <dependency> <groupId>com.mvn</groupId> <artifactId>ssm-spring-part</artifactId> </dependency> </dependencies>
-
5.聚合
构建角度:将多个项目组织到一个父级项目中
在总工程中配置 modules 即可:
<modules>
<module>pro04-maven-module</module>
<module>pro05-maven-module</module>
<module>pro06-maven-module</module>
</modules>