Maven

发布于:2025-06-21 ⋅ 阅读:(17) ⋅ 点赞:(0)

1.工作原理

在这里插入图片描述

  • pom.xml:project object model,是项目对象模型
  • Plug-in:插件

2.Maven的安装

网上下载个maven二进制包,在环境变量中配置一下bin目录即可

3.Setting.xml(配置)

3.1本地仓库

在这里插入图片描述

需要注意的是windows电脑上的目录是,不要整错

3.2配置国内镜像仓库

在这里插入图片描述

3.3配置maven构建项目JDK版本

在这里插入图片描述

4.GAVP属性

Maven中的GAVP指的是Group ID、Artifact ID、Version、Packing等四个属性的缩写,前三个是必要的,而Packing是可选的,默认的是jar包。GAVP相当于在Maven仓库中做一个标识。

  • GroupID:一般格式为公司域名.业务线,最多四级。例如com.taobao.tddl
  • ArtifactID:产品线-模块名,例如:tair-tool
  • Version:主版本.次版本.修订号
    • 主版本:增加了能改变产品方向的新功能
    • 次版本:做了向下兼容的功能性新功能
    • 修订号:修改了版本
  • Packing:打包方式
    • jar:默认打包方式
    • war:web打包
    • pom:父工程专用,用于聚合工程

5.Maven工程的结构说明

在这里插入图片描述

6.构建

项目构建是指的将源代码】依赖库和资源文件等转换成可执行或可部署的应用程序的过程,在这个过程中包括编译源代码、链接依赖库、打包和部署等多个步骤。

在这里插入图片描述

6.1编译

将maven工程中的java文件、资源文件生成对应的class文件,放到target目录(与src同级)

mvn compile

6.2清理

清理生成的target目录

mvn clean

6.3编译测试类

maven工程中,测试类以Test结尾,测试方法以test开头

mvn test-compile

6.4运行测试方法

mvn test

6.5打包

将target打包为jar包/war包,打包前会先经过测试

mvn package

6.6安装

将jar包安装到本地

mvn install:install-file -Dfile=jar包文件地址 -DgroupId=groupId -DartifactId=artifactId -Dversion=version -Dpackaging=jar

6.7生命周期

构建生命周期就是一组固定构建命令的有序集合,出发周期后的命名,会自动触发周期前的命令,例如mvn package包含了compile test package install deploy命令

7.依赖管理

<dependencies>
	# 用于管理依赖
</dependencies>
<properties>
  # 用于属性管理,常用于定义依赖版本
</properties>

8.依赖范围

在这里插入图片描述

9.自定义打包名称

<finalName>wys</finalName>
# jar包会带上.jar,war包会带上.war

10.依赖传递

  • A依赖于B,B依赖于C,A就是依赖于C,这就是依赖传递

  • 依赖传递只适用于scope为compile

  • option为true,终止传递
    在这里插入图片描述

  • 依赖冲突,终止传递

11.依赖冲突

当直接引用或者间接应用出现了相同的jar包,就发生了依赖冲突。依赖冲突分为两种,分别为:自动选择原则和手动选择原则

  • 自动选择原则:
    • 短路优先原则(第一原则):例如,A依赖于B,B依赖于C(V1.0.0),A又依赖于C(V2.0.0),则会使用C(V2.0.0)
    • 依赖路径长度相同情况下,则先声明优先,在中,先声明的,路径相同,会优先选择
  • 手动选择原则:
    在这里插入图片描述

11.Maven继承

Maven继承是指在Maven项目中,让一个项目从另一个项目中集成配置信息的机制,继承可以让我们在多个项目中共享同一个配置信息,方便项目的管理。

  • 父工程需要设置打包方式为POM
    在这里插入图片描述

  • 子工程的GroupID和Version要与父工程相同

  • 子工程需要设置parent标签,设置父工程的信息
    在这里插入图片描述

  • 子工程由于Group ID和Version要与父工程相同,因此子工程中不需要设置GroupID和Version

  • 父工程中的Dependencies会直接继承给子工程
    在这里插入图片描述

  • 父工程中的DependencyManagement,子工程不会自动引入,子工程需要手动引入,但是需要注意的是,子工程手动引入的时候,是不需要Version的
    在这里插入图片描述
    在这里插入图片描述

12.Maven聚合

对父进行了什么操作,子工程也会进行什么操作,一键管理。需要在父工程中使用model标签引入子工程。

在这里插入图片描述

13.Maven私服

Maven私服是一种特殊的Maven远程仓库,是假设在局域网内的仓库服务,用来代理位于外部的远程仓库

建立的Maven私服后,当需要下载依赖的时候,首先回去本地仓库中找,然后再去私服找,最后才会从远程仓库中找。

13.1Docker中安装Nexus

version: "3.3"
services:
  nexus:
    image: sonatype/nexus3:latest
    container_name: nexus3
    restart: always
    privileged: true
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "8081:8081"
      - "28082:28082"
    volumes:
      - /home/nexus/data:/nexus-data

需要注意的是,nexus挂载的/home/nexus/data目录需要授权,使用chmod 777 /home/nexus/data

13.2登录nexus

- 账号为:admin,密码在/home/nexus/data下

13.3常见的配置

在这里插入图片描述

  • 本地仓库配置私服
    在这里插入图片描述

配置完私服后,如果本地仓库和私服中没有依赖,nexus会先从远程仓库中获取,然后本地再从nexus中获取

13.4上传jar包到nexus

pom文件中加入如下配置

<distributionManagement>
    <repository>
        <id>nexus-mine</id>
        <url>http://192.168.126.30:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>nexus-mine</id>
        <name>Nexus mine</name>
        <url>http://192.168.126.30:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>
  • distributionManagement:这个元素用来配置项目发布的相关信息,特别是将构建结果发布到远程仓库时的目标位置。它通常包含 <repository><snapshotRepository> 子元素,以及其他相关的发布配置
  • repository:这个元素配置了发布正式(发布版本)到远程仓库的仓库信息。正式版本指的是经过正式发布的版本,通常是稳定版本。
    • <id>:仓库的标识符,通常是一个唯一的名字。
    • <url>:远程仓库的 URL,指向发布正式版本的目标仓库。
  • snapshotRepository:这个元素配置了发布快照(snapshot)版本的仓库信息。快照版本通常表示开发中的不稳定版本,可能会频繁更新。
    • <id>:仓库的标识符
    • <name>:仓库的名称,
    • url>:远程仓库的 URL

运行命令

mvn deploy

14.忽略测试

mvn install -DskipTests

网站公告

今日签到

点亮在社区的每一天
去签到