Maven 是一个强大的项目管理和构建自动化工具,主要用于 Java 项目的构建、依赖管理和文档生成。它通过使用 POM(Project Object Model)文件来管理项目的配置和依赖关系,从而实现项目的自动化构建和管理。以下是 Maven 的一些核心概念和功能:
1. Maven 的核心概念
(1)POM 文件
POM(Project Object Model)文件是 Maven 的核心配置文件,它是一个 XML 文件,位于项目的根目录下,文件名为 pom.xml。POM 文件定义了项目的依赖、插件、构建生命周期、配置等信息。
(2)生命周期
Maven 的生命周期是一系列的阶段,用于定义项目的构建过程。Maven 有三个主要的生命周期:
- 
Clean Lifecycle :清理项目,删除目标目录( target)。- clean:清理项目。
 
- 
Default Lifecycle:构建项目,包括编译、测试、打包、部署等。 - 
validate:验证项目是否正确。
- 
compile:编译项目代码。
- 
test:运行测试。
- 
package:打包项目(如 JAR、WAR)。
- 
install:将包安装到本地仓库。
- 
deploy:将包部署到远程仓库。
 
- 
- 
Site Lifecycle:生成项目文档和站点。 
(3)依赖管理
Maven 使用中央仓库来管理依赖。当项目需要某个依赖时,Maven 会从本地仓库中查找,如果本地仓库中没有,则从远程仓库(如 Maven Central)下载并存储到本地仓库。依赖的版本管理可以通过 POM 文件中的 <dependency> 标签来配置。
(4)插件
Maven 的功能通过插件来扩展。插件是一组可重用的代码,用于执行特定的任务,如编译代码、打包项目、运行测试等。插件的生命周期与 Maven 的生命周期紧密集成。例如,maven-compiler-plugin 用于编译代码,maven-surefire-plugin 用于运行测试。
2.依赖配置

<dependencies>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
</dependencies>3.依赖管理

依赖itheima下的projectB模块,如下
<dependencies>
    <dependency>
        <groupId>com.itheima</groupId>
        <artifactId>maven-projectB</artifactId>
        <version>1.0_SNAPSHOT</version>
    </dependency>
</dependencies>
            
            
              java
              
              
            
          
          <dependencies>
    <dependency>
        <groupId>com.itheima</groupId>
        <artifactId>maven-projectB</artifactId>
        <version>1.0_SNAPSHOT</version>
        //排除
        <exclusions>
             <exclusion>
                <artifactId>maven-projectB</artifactId>
                <groupId>com.itheima</groupId>
             </exclusion>
        </exclusions>
    </dependency>
</dependencies>4.依赖范围


compile(编译范围)
- 描述 :这是默认的依赖范围。如果未显式指定依赖范围,则默认为 compile。
            
            
              java
              
              
            
          
          <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.3.23</version>
    <scope>compile</scope> <!-- 默认值,可以省略 -->
</dependency>provided(已提供范围)
- 描述:表示依赖在编译和测试阶段可用,但在运行时由运行环境(如应用服务器)提供。
            
            
              java
              
              
            
          
          <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>runtime(运行时范围)
- 描述:表示依赖在运行和测试阶段可用,但在编译阶段不需要。
            
            
              java
              
              
            
          
          <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.28</version>
    <scope>runtime</scope>
</dependency>test(测试范围)
- 
描述:表示依赖仅在测试编译和测试执行阶段可用。 
            
            
              java
              
              
            
          
          <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>system(系统范围)
- 描述 :类似于 provided,但依赖必须显式指定路径。
import(导入范围)
- 描述 :仅用于依赖管理(dependencyManagement)部分,用于导入其他 POM 文件中的依赖管理配置。
optional(可选范围)
- 描述:虽然不是独立的范围,但可以与上述范围配合使用。
5.生命周期

关注如下五阶段:
clean compile test package install




以上。