maven —— 总结

本文介绍了Maven在依赖管理和构建过程中的关键作用,包括作为依赖管理工具处理版本冲突,构建工具支持离线构建,以及通过pom.xml文件管理和聚合多个项目。重点讲解了依赖管理、项目构建命令和生命周期,以及继承和聚合的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值