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本地仓库中)

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

相关推荐
云烟成雨TD7 分钟前
Spring AI 1.x 系列【28】基于内存和 MySQL 的多轮对话实现案例
java·人工智能·spring
Lyyaoo.10 分钟前
【JAVA基础面经】String、StringBuffer、StringBuilder
java·开发语言
TeamDev16 分钟前
JxBrowser 8.18.2 版本发布啦!
java·前端·跨平台·桌面应用·web ui·jxbrowser·浏览器控件
晴天sir19 分钟前
Redis 在业务中的几种典型用法
java·数据库·redis
WJX_KOI25 分钟前
MemOS —— 为大语言模型 (LLMs) 和智能体打造的记忆操作系统。
java·人工智能·语言模型
_日拱一卒29 分钟前
LeetCode:矩阵置零
java·数据结构·线性代数·算法·leetcode·职场和发展·矩阵
weixin_4080996733 分钟前
【实战教程】懒人精灵如何实现 OCR 文字识别?接口调用完整指南(附可运行示例)
java·前端·人工智能·后端·ocr·api·懒人精灵
花千树-0101 小时前
Java Agent 集成 MCP 工具协议:让 AI 真正驱动企业系统
java·ai·langchain·ai agent·mcp·harness·j-langchain
橘子编程1 小时前
GoF 23 种设计模式完整知识总结与使用教程
java·c语言·开发语言·python·设计模式
君以思为故1 小时前
认识Linux -- 线程同步与互斥
java·开发语言