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");
    }
}
相关推荐
NE_STOP20 小时前
SpringBoot-shiro-jwt-dubbo-redis分布式统一权限系统(完结)
java
zfj32120 小时前
java函数式接口 @FunctionalInterface用法
java·函数·function
TracyCoder12320 小时前
并发编程(二):Java原子类(Atomic Classes)全解析
java·原子类·atomic
野犬寒鸦20 小时前
从零起步学习MySQL || 第十六章:MySQL 分库分表的考量策略
java·服务器·数据库·后端·mysql
木风小助理20 小时前
JavaAtomicInteger底层实现深度解析
java
BD_Marathon20 小时前
搭建MyBatis框架之创建MyBatis的映射文件(五)
java·数据库·mybatis
一只叫煤球的猫20 小时前
为什么Java里面,Service 层不直接返回 Result 对象?
java·spring boot·面试
洛阳泰山20 小时前
智能体项目MaxKB4J - 本地部署与开发完整指南
java·agent·工作流·rag·智能体·maxkb
Solar202521 小时前
机械制造业TOB企业获客软件选型指南:从挑战到解决方案的深度解析
java·大数据·服务器·架构·云计算
星火开发设计21 小时前
C++ stack 全面解析与实战指南
java·数据结构·c++·学习·rpc··知识