Maven基础知识

Maven基础知识

一、Maven的作用

  • 更方便的导入jar包,避免版本冲突问题

  • 标准项目结构:

  • 标准化的项目构建流程

二、Maven的安装和集成

  • 安装步骤:

    1. 下载并解压 apache-maven-3.9.11-bin.zip

    2. 配置本地仓库:修改 conf/settings.xml 中的 为一个指定目录。

      xml 复制代码
      <localRepository>D:\JAVA\develop\apache-maven-3.9.11\mvn_repo</localRepository> 
      <!-- 此处设置为自己的目录用于下载jar包 -->
    3. 配置阿里云私服:修改 conf/settings.xml 中的标签,为其添加如下子标签:

      xml 复制代码
      <mirror>
      	<id>alimaven</id>
      	<name>aliyun maven</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
          <mirrorOf>centralrOf>
      </mirror>
    4. 配置环境变量:MAVEN_HOME为maven的解压目录,并将其bin目录加入PATH环境变量

      • 在命令行中执行mvn -v测试Maven是否安装成功
  • VScode创建maven项目

    参考文章:(43 封私信) 配置 Maven 并创建项目-VScode - 知乎

三、依赖管理

3.1 依赖配置

  • 依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖

  • 配置:

    1. 在pom.xml中编写标签
    2. 在标签中使用引入坐标
    3. 定义坐标的 groupId, artifactId, version
    4. 点击刷新,引入最新加入的坐标
xml 复制代码
<dependencies>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
</dependencies>
  • 如果不知道依赖的坐标信息,可以到maven网站搜索

3.2 依赖传递

  • 依赖具有传递性
    • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
    • 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
  • VScode需要对依赖传递的项目,从最底层依赖,进入到对应文件根目录,依次向上执行

    cmd 复制代码
    mvn clean install

    最后能在maven控制面板中看到依赖传递

  • 排除依赖:主动断开依赖的资源,被排出的资源无需指定版本

    xml 复制代码
        <dependencies>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.2.3</version>
            </dependency>
    
            <dependency>
                <groupId>com.itheima</groupId>
                <artifactId>maven-projectB</artifactId>
                <version>1.0-SNAPSHOT</version>
                <!-- 排除依赖-->
                <exclusions>
                    <exclusion>
                        <groupId>junit</groupId>
                        <artifactId>junit</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>

3.3 依赖范围

  • 依赖的jar包,默认情况下可以再任何地方使用,可以使用...设置其作用范围

3.4 生命周期

  • Maven生命周期就是为了对所有的maven项目构建过程进行抽象和统一

  • Maven中有三套相互独立的生命周期

    • clean:清理工作
    • default:核心工作,如编译,测试,打包,安装,部署等
    • site:生成报告、发布站点等
  • 五个重要的生命周期阶段:

    • clean:移除上一次构建生成的文件
    • compile:编译项目源代码
    • test:使用合适的单元测试框架运行测试(junit)
    • package:将编译后的文件打包,如:jar、war
    • install:安装项目到本地仓库
  • 在Maven面板中 lifecycle中双击需要执行的阶段即可。

java 复制代码
// 测试生命周期中的test操作
package com.zcn;

import org.junit.Test;

public class DemoTest {
    @Test
    public void test1() {
        System.out.println("hello test1");
    }

    @Test
    public void test2() {
        System.out.println("hello test2");
    }

    @Test
    public void test3() {
        System.out.println("hello test3");
    }
}
相关推荐
TDengine (老段)11 分钟前
TDengine 免费版说明
java·大数据·数据库·物联网·时序数据库·tdengine
码上有光15 分钟前
异常和智能指针
java·大数据·c++·servlet·异常·智能指针
学计算机的计算基1 小时前
操作系统内存管理全解:虚拟内存、页表、COW、malloc、OOM一篇搞定
java·笔记·算法
tachibana21 小时前
hot100 前 K 个高频元素(347)
java·数据结构·算法·leetcode
万亿少女的梦1681 小时前
基于Spring Boot、Java与MySQL的网络订餐系统设计与实现
java·spring boot·mysql·系统设计·网络订餐
咩咩啃树皮10 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
鱟鲥鳚10 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
大模型码小白12 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司12 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
爱笑的源码基地13 小时前
高并发 Redis 缓存门诊HIS系统源码,含财务统计药房进销存
java·程序·门诊系统·诊所系统·云诊所源码