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

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

相关推荐
huohaiyu17 分钟前
Hashtable,HashMap,ConcurrentHashMap之间的区别
java·开发语言·多线程·哈希
信奥卷王1 小时前
[GESP202503 五级] 原根判断
java·数据结构·算法
小咕聊编程1 小时前
【含文档+源码】基于SpringBoot的过滤协同算法之网上服装商城设计与实现
java·spring boot·后端
Zz_waiting.1 小时前
Spring 原理
java·spring·spring自动管理
瓯雅爱分享5 小时前
Java+Vue构建的采购招投标一体化管理系统,集成招标计划、投标审核、在线竞价、中标公示及合同跟踪功能,附完整源码,助力企业实现采购全流程自动化与规范化
java·mysql·vue·软件工程·源代码管理
mit6.8248 小时前
[C# starter-kit] 命令/查询职责分离CQRS | MediatR |
java·数据库·c#
诸神缄默不语8 小时前
Maven用户设置文件(settings.xml)配置指南
xml·java·maven
任子菲阳8 小时前
学Java第三十四天-----抽象类和抽象方法
java·开发语言
学Linux的语莫9 小时前
机器学习数据处理
java·算法·机器学习
找不到、了9 小时前
JVM的即时编译JIT的介绍
java·jvm