Maven

什么是Maven

maven是管理和构建java的工具


Maven的作用

依赖管理

方便快捷导入jar包,避免版本冲突问题。无需再手动导入jar包

在maven工程中的pom.xml文件中直接导入jar包并且可以自由切换版本,无需再手动导入

统一项目结构

maven工程生成标准结构在任何java编译器中都可以使用

标准化项目构建方式

通过maven给的指令能够快速完成项目的操作


认识maven

maven在安装第三方依赖的时候会走

本地仓库 -> 远程仓库(可能不存在)-> 中央仓库

下载maven

https://maven.apache.org/download.cgi

配置maven

复制代码
<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

配置完成后cmd中输入mvn -v。看到版本号就说明配置成功了

创建maven工程

首先在全局设置中配置我们下载的Maven

新建maven项目

点击新增项目,选择Maven然后点击创建

生成结构如下

pxm.xml文件格式如下

复制代码
// 项目坐标
<groupId>org.example</groupId>
<artifactId>Maven</artifactId>
<version>1.0-SNAPSHOT</version>

// jdk版本
<properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

什么是Maven坐标

资源的唯一表示。坐标可以用来定义项目和引入第三方依赖

复制代码
    <groupId>org.example</groupId>		// 定义当前maven项目隶属组织名称
    <artifactId>Maven</artifactId>		// 定义当前maven项目名称
    <version>1.0-SNAPSHOT</version>		// 定义当前版本号

依赖管理

依赖就是指项目运行中所需要的jar包,一个项目可以有多个依赖

依赖配置

导入第三方依赖(jar包)

复制代码
<dependencies>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
	
	...
</dependencies>

依赖传递

maven中的依赖具有传递性。如果a项目依赖b项目。我们在依赖a项目的时候会自动依赖b项目

上述例子中我们只依赖了一个项目但是同是会依赖他下面的所有项目

排除依赖

如果我们不需要某个依赖下的依赖我们可以排除

复制代码
<dependencies>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
            </exclusion>
	
			...
        </exclusions>
    </dependency>
	
	...
</dependencies>

可以看到我们指定的依赖就被排除了

依赖范围

依赖默认可以在main,text,package文件下使用

我们可以通过scope来配置在什么环境下生效

复制代码
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
<scope>test</scope>

生命周期

maven的生命周期就是对所有maven构建项目过程的抽象

maven的生命周期是各自独立的

1. clean

清理工作

2. default

核心工作,比如编译,测试,打包,部署,安装...

3. site

生成报告,发布站点

clean: 移除上一次构建生成的文件(默认target文件)

compile:编译项目代码(默认target文件)

text:使用合适的单元进行测试(执行text文件)

package:将编译好的代码打包,jar/war...包(jar包打包到target文件下)

install:安装项目到本地仓库(将jar包安装到maven本地仓库中)

注意我们在执行某个指令,他之前的指令也会被执行。同上

相关推荐
金銀銅鐵2 小时前
一个 Java 文件实现《孫子兵法·始計篇》中英对照阅读器
java·后端·ai编程
DevOpenClub2 小时前
高考教育信息问答 API:会话参数、资料引用与流式响应
java·数据库·高考
bro_Java6662 小时前
《排序的底层逻辑:比较、交换与分治》
java·算法·排序算法
文丑颜不良啊4 小时前
LeetCode2081~2100题目解析
java·leetcode
玖米GEO运营王总监4 小时前
2026年账号矩阵协同效应怎么量化:三个指标与公式结构
java·大数据·数据库
叼烟扛炮5 小时前
[LangChain] 学习笔记(03):打破失忆症——对话机制与上下文管理
java·前端·javascript·笔记·学习·langchain
文丑颜不良啊6 小时前
LeetCode2061~2080题目解析
java·leetcode
特立独行的猫A6 小时前
13MB 单文件、一条命令变服务:把仓颉写的 cjh 内嵌进你的应用,当它的 AI 大脑
java·后端·python
Brookty6 小时前
Java博客项目实战|工程环境与构建:工程目录、PowerShell命令调用与JDK/IDEA/Maven工作机制
java·项目实战
养军博客7 小时前
Spring Boot 3.x + Spring Security 6.x 整合 JWT 实战:jjwt 与 java-jwt 两种工具库详解
java·spring boot·springsecurity