当前位置: 首页 > news >正文

Maven从入门到精通指南

1、什么是Maven?

Maven 是一个基于 项目对象模型(POM,Project Object Model)构建工具依赖管理工具,主要用于 Java 项目(也支持其他语言如 Scala、Kotlin 等)。它由 Apache 软件基金会维护,旨在简化项目的构建、依赖管理、文档生成和发布流程。

2、为什么使用 Maven?

传统 Java 项目的痛点

  1. 手动管理依赖:需要自己下载 JAR 文件并配置 classpath,容易出错。
  2. 构建流程不统一:不同开发者可能使用不同的构建方式(如 Ant、手动编译)。
  3. 项目结构混乱:没有统一标准,导致协作困难。

Maven 的优势:

  1. 自动依赖管理(从中央仓库下载)
  2. 标准化构建命令(如 mvn clean install)
  3. 统一的项目结构(如 src/main/java 存放源码)
  4. 丰富的插件生态(测试、打包、部署等)

3、Maven的安装

maven下载地址:

Index of /dist/maven/maven-3https://archive.apache.org/dist/maven/maven-3/

maven中央仓库:https://mvnrepository.com/

4、Maven仓库种类

仓库种类包括:本地仓库、中心仓库、远程仓库(私服)。

1)本地仓库:打开Maven-conf目录下的settings.xml,可以看到localRepository的注解:Default: ${user.home}/.m2/repository,即Maven本地仓库的默认位置是系统盘下的路径;

2)中央仓库:启动Maven工程时,先通过jar包坐标在本地仓库寻找jar包,若本地没有,在联网的情况下会去中央仓库下载,未联网的情况下因找不到jar包会报错。中央仓库放置了几乎所有的开源jar包;

3)远程仓库:实际企业项目开发时,为了方便管理,且未联网的情况下也正常开发,会创建一个远程仓库,别名为私服。公司可以通过局域网从远程仓库获取jar包。远程仓库的jar包可以是本地上传的,也可以是从中央仓库下载的。

5、Maven标准目录机构

一个典型的 Maven 项目目录结构如下:

项目根目录/
├── pom.xml                # Maven 项目配置文件
├── src/                   # 源代码和资源文件
│   ├── main/              # 主代码(编译后进入最终包)
│   │   ├── java/          # Java 源代码
│   │   ├── resources/     # 配置文件(如 .properties, .xml)
│   │   ├── webapp/        # Web 项目特有(如 JSP, HTML)
│   │   └── ...            # 其他语言(如 Kotlin 使用 kotlin/)
│   └── test/              # 测试代码(不进入最终包)
│       ├── java/          # 测试 Java 代码
│       ├── resources/     # 测试资源文件
│       └── ...            # 其他测试代码
└── target/                # 构建输出目录(编译后的 class、生成的 JAR/WAR)

src/main/java目录:核心代码部分;

src/main/resources:配置文件部分;

src/test目录:测试代码部分;

src/test/resources:测试配置文件。

src/main/webapp:页面资源,包含js、css、图片等。

6、IDEA创建Maven项目

1、打开IDEA创建Maven项目(以SpringBoot项目为例)

2、项目配置maven

3、查看pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.6</version><relativePath/></parent><groupId>com.lw.mavendemo</groupId><artifactId>maven-demo</artifactId><version>0.0.1-SNAPSHOT</version><name>maven-demo</name><description>maven-demo</description><packaging>war</packaging><properties><java.version>1.8</java.version><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

4、打开系统命令行

7、Maven常用命令

1、mvn clean:删除编译文件target,在导入已有的项目时,clean一下,因为每个人的开发环境不同,所以要删除掉原来的编译信息

2、mvn compile:编译src/main目录下的代码,结果放在target目录下;

3、mvn test:不仅编译src/main下代码,也编译src/test下的代码

4、mvn package:不仅编译src/main下代码,也编译src/test下的代码,且打了war包或jar包

5、mvn install:不仅编译src/main下代码,也编译src/test下的代码,且打了war包,此外,把当前项目的jar包存在了本地仓库。

6、mvn deploy:将构件部署到 远程仓库(如 Nexus),需在 pom.xml 中配置<distributionManagement>。

8、Maven的生命周期

Maven 生命周期按照构建过程分为三个部分,即 清理(clean)、构建(build) 和 站点生成(site)。每个部分包含不同的阶段(phase),执行的顺序是固定的,也就是说 Maven 在执行构建时会依次运行每个阶段。

以下是 Maven 的生命周期和各个阶段的简要说明:

  1. 清理生命周期:
    a. pre-clean:在清理之前执行的动作
    b. clean:清理上一次构建生成的文件
  2. 构建生命周期:
    a. validate:验证项目是否正确并且所有必要信息都可用
    b. compile:编译项目的源代码
    c. test:测试编译后的代码
    d. package:将编译后的代码打包成可发布的格式,如 JAR、WAR 等
    e. install:将打包好的代码安装到本地仓库,方便其他项目进行依赖管理
    f. deploy:将打包好的代码部署到远程仓库,方便其他人使用
  3. 站点生命周期:
    a. pre-site:在生成站点之前执行的动作
    b. site:生成项目的站点文档
    c. post-site:在生成站点之后执行的动作,如部署站点到服务器上
    d. site-deploy:将生成的站点部署到远程服务器上

9、maven依赖管理-pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.6</version><relativePath/></parent><groupId>com.lw.mavendemo</groupId><artifactId>maven-demo</artifactId><version>0.0.1-SNAPSHOT</version><name>maven-demo</name><description>maven-demo</description><packaging>war</packaging><properties><java.version>1.8</java.version><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.5.6</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><repositories><repository><id>central</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><layout>default</layout><!-- 是否开启发布版构件下载 --><releases><enabled>true</enabled></releases><!-- 是否开启快照版构件下载 --><snapshots><enabled>false</enabled></snapshots></repository></repositories><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

标签

作用

<project>

POM 文件的根标签。

<modelVersion>

指定 POM 模型的版本(固定为 4.0.0 )。

<parent>

继承父 POM(如 Spring Boot Starter Parent)。

<groupId>

组织标识(如 com.company)。

<artifactId>

项目名称。

<version>

项目版本( SNAPSHOT 表示开发中版本)。

<packaging>

打包方式(jar/war)。

<properties>

定义变量(如 Java 版本)。

<dependencies>

声明项目依赖。

<dependencyManagement>

统一管理依赖版本(多模块项目常用)。

<repositories>

配置远程仓库地址(如阿里云镜像)。

<build>

配置构建插件(如 spring-boot-maven-plugin)。

相关文章:

  • MyBatis-Plus 常用条件构造方法
  • uniapp实现的具备丝滑动画的标签工具栏模板
  • Django 5 学习笔记总纲
  • [蓝桥杯 2024 国 Java B] 美丽区间
  • Unity中的Mathf.Lerp
  • 记录一次opengl显示不出物体的错误原因
  • SQL进阶之旅 Day 22:批处理与游标优化
  • 什么是闭包,JavaScript闭包详解
  • 47 通道注意力 热力图
  • 基于Java项目的Karate API测试
  • SpringBoot配置
  • 245. 2019年蓝桥杯国赛 - 数正方形(困难)- 递推
  • Redis实战-黑马点评项目完结(p78-p95)
  • 曼昆《经济学原理》第九版 第十二章税收制度的设计
  • MQTT示例体验(C)
  • PyCharm 和 Anaconda 搭建Python环境【图文教程】
  • JAVA开发工具箱
  • 【ubuntu24.04】普通用户如何操作samba挂载的文件夹
  • 曼昆《经济学原理》第九版 第十章外部性
  • LangGraph 应用实例解析
  • 公司门户网站模板/优化设计六年级上册语文答案
  • 做淘宝客网站需要多大空间/网站打开速度优化
  • 辽宁省建设工程招投标协会网站/网络营销买什么好
  • 佛山手机建网站/西安seo管理
  • 高端公司网站建设/搜索引擎seo关键词优化
  • 品牌网站设计公司哪家/长沙靠谱的关键词优化