Maven笔记(一):基础使用【记录】

news/2024/11/15 6:50:01/

Maven笔记(一)-基础使用

Maven是专门用于管理和构建Java项目的工具,它的主要功能有:

  • 提供了一套标准化的项目结构

Maven提供了一套标准化的项目结构,所有IDE(eclipse、myeclipse、IntelliJ IDEA 等 项目开发工具) 使用Maven构建的项目结构完全一样,所有IDE创建的Maven项目可以通用。
image.png

  • 提供了一套标准化的构建流程(编译,测试,打包,发布……)

image.png

  • 提供了一套依赖管理机制

依赖管理其实就是管理你项目所依赖的第三方资源 (jar包、插件…)

  • 以前的操作流程: 需要手动去导入jar包,过程非常繁琐image.png
  • 使用Maven管理jar包:

Maven 使用标准的坐标配置来管理各种依赖,只需要简单的配置就可以完成依赖管理
image.png

常见的项目构建工具使用占比情况:
image.png

一、Maven简介

官网:https://maven.apache.org/
Maven是一款自动化构建工具,专注服务于Java平台的项目构建依赖管理。它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。

1.1 Maven模型

image.png

  • 项目对象模型

每个项目在 pom.xml 文件中都有自己的唯一标识。

  • 依赖管理模型
  • 插件(plugin)

打包插件、编译插件…

1.2 Maven仓库

  • 仓库的分类:

本地仓库:自己计算机上的一个目录
中央仓库:由Maven团队维护的全球开源唯一的仓库,地址:https://repo1.maven.org/maven2/
远程仓库(私服):一般由公司团队搭建的私有仓库,存放一些含有版权的Jar


当项目中 pom.xml 使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包,如果有,则在项目直接引用;如果没有,则去中央仓库中下载对应的jar包到本地仓库。
还可以搭建远程仓库,将来jar包的查找顺序则变为:本地仓库 -> 远程仓库 -> 中央仓库

二、Maven安装配置

Maven安装直接进入官网进行下载(下载地址:http://maven.apache.org),选择zip格式的压缩文件,解压后即可使用。
解压出来之后的Maven工具目录结构如下:
image.png

2.1 配置Maven环境变量

  • 环境变量设置中的 系统变量中添加MAVEN_HOMEimage.png
  • 在系统变量里的Path变量内部添加MAVE_HOME

image.png

  • 打开CMD终端测试配置情况

命令:mvn -version
image.png

2.2 配置Maven 本地仓库

修改 Maven 工具目录下面的** conf/settings.xml**文件中的 ****标签内容。为 标签指定目录文件夹,用于存放依赖。
image.png
注:Maven本地仓库在配置前都会有一个默认仓库地址C:/用户/super/.m2/repository。默认仓库地址是在C盘下,所有这里建议调整一下。

2.3 配置阿里云私服

私服的配置是为了提高项目中jar包的下载速度,阿里云私服对于中央仓库来说下载速度更快。
修改 Maven 工具目录下面的** conf/settings.xml**文件中的 ** **标签内容。
image.png

<mirror>  <id>alimaven</id>  <name>aliyun maven</name>  <url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>          
</mirror>

三、Maven基本使用

3.1 Maven的常用命令


**PS:**这里简单的创建了一个Mavn项目,然后通过执行下面命令查看执行效果:
image.png

  • MavenTest类中代码
java">package org.myself;public class MavenTest {public static void main(String[] args) {System.out.println("Hello World ~~!");}
}
  • TestMaven :test文件夹下的测试类代码
java">package org.myself;
import org.junit.Test;
public class TestMaven {@Testpublic void testAAA(){System.out.println("======== Maven test  执行~!========");}
}
  • 项目中 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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.myself</groupId><artifactId>maven_demo</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.1</version><scope>test</scope></dependency><!-- 导入依赖 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.20</version></dependency></dependencies><properties><java.version>1.8</java.version><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.10</version><configuration><!--<includes><include>**\*</include></includes>--><!--<skipTests>true</skipTests>--></configuration></plugin></plugins></build></project>

执行命令时,需要cmd到对应项目中 pom.xml 所在目录下进行命令操作
在Maven项目目录下( pom.xml 文件所在目录层级中),进入cmd命令终端,然后执行下列命令。

  • mvn compile 编译命令

在项目目录下,执行 mvn compile 命令后会对项目进行编译操作,首先Maven工具会去自动下载需要用到的编译插件。然后会在私服/中央仓库中 下载 pom.xml 文件中所依赖jar 到本地仓库中。
image.png
编译完成之后,项目文件夹中会增加一个 target 文件目录,该文件中就存放了当前项目编译后的 java.class 字节码文件。

  • mvn clean 清理

清理命令主要作用是用来删除 执行编译命令 mvn compile时所生成的 target文件。同时Maven也会自动去下载一些clean插件。
image.png

  • mvn test 测试

用于执行项目中 test文件目录下的 Java 测试代码,会在控制台中对应输出测试类中的打印数据。
image.png

  • mvn package 打包命令

主要作用是将项目代码编译成class文件,然后打包生成对应的jar包java项目打成jar包 / Web项目打成war包 [后续介绍]),项目目录中同样会生成一个 target文件目录,该target文件中就存放了打包生成的jar文件。
同样执行命令时,Maven会自动下载打包所需要的插件。
image.png

  • mvn install 安装

命令作用是将当前项目,安装到本地仓库中,然后本地仓库中就会对应生成该项目的jar包。
image.png
image.png

3.2 Maven的生命周期

Maven 构建项目生命周期描述的是一次构建过程经历经历了多少个事件
Maven对项目构建的生命周期划分为3套,分别为 clean、default、site:

  • clean:清理工作

image.png

  • default:核心工作

例如编译、测试、打包、安装等。
image.png

  • site:产生报告,发布站点等

image.png

同一生命周期内,执行后边的命令,前边的所有命令会自动执行。


default 构建生命周期 (除了几个常用命令,其余大部分命令都很少使用到)

  • validate(校验):校验项目是否正确并且所有必要的信息可以完成项目的构建过程。
  • initialize(初始化):初始化构建状态,比如设置属性值。
  • generate-sources(生成源代码):生成包含在编译阶段中的任何源代码。
  • process-sources(处理源代码):处理源代码,比如说,过滤任意值。
  • generate-resources(生成资源文件):生成将会包含在项目包中的资源文件。
  • process-resources (处理资源文件):复制和处理资源到目标目录,为打包阶段最好准备。
  • compile(编译):编译项目的源代码。
  • process-classes(处理类文件):处理编译生成的文件,比如说对Java class文件做字节码改善优化。
  • generate-test-sources(生成测试源代码):生成包含在编译阶段中的任何测试源代码。
  • process-test-sources(处理测试源代码):处理测试源代码,比如说,过滤任意值。
  • generate-test-resources(生成测试资源文件):测试创建资源文件。
  • process-test-resources(处理测试资源文件):复制和处理测试资源到目标目录。
  • test-compile(编译测试源码):编译测试源代码到测试目标目录.
  • process-test-classes(处理测试类文件):处理测试源码编译生成的文件。
  • test(测试):使用合适的单元测试框架运行测试(Juint是其中之一)。
  • prepare-package(准备打包):在实际打包之前,执行任何的必要的操作为打包做准备。
  • **package(打包):**将编译后的代码打包成可分发格式的文件,比如JAR、WAR或者EAR文件。
  • pre-integration-test(集成测试前):在执行集成测试前进行必要的动作。比如说,搭建需要的环境。
  • integration-test(集成测试):处理和部署项目到可以运行集成测试环境中。
  • post-integration-test(集成测试后):在执行集成测试完成后进行必要的动作。比如说,清理集成测试环境。
  • verify (验证):运行任意的检查来验证项目包有效且达到质量标准。
  • install(安装):安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖。
  • deploy(部署):将最终的项目包复制到远程仓库中与其他开发者和项目共享。

四、IDEA 配置 Maven

  1. 选择 IDEA 中 File --> Settings
  2. 搜索 maven( 在Build… -> Build Tools -> Maven 中设置)
  3. 设置IDEA 使用本地安装的maven,并修改配置文件路径

image.png

4.1 Maven坐标

Maven坐标上资源的唯一标识,使用坐标来定义项目或者引入项目中需要的依赖。

  • Maven 坐标的主要成分
  1. groupId:定义当前Maven项目隶属组织名称(通常是域名反写 eg:com.item)
  2. artifactId:定义当前Maven项目名称(通常是模块名称 eg:order-server、goods-server)
  3. version:定义当前项目版本号

eg:项目定义坐标
image.png

eg:项目引入坐标
image.png

4.2 Maven项目中打印输出乱码解决方案

  • Help --> Edit Custom Vm Options 中添加 Dfile.encoding = utf-8

image.png

  • File --> Settings --> File Encodings 中的三个选项设置为 UtF-8

image.png

  • File --> Setting --> Runner 中的 VM Options 设置为:-Dfile.encoding=GB2312

image.png

五、Maven 依赖管理

5.1 使用坐标导入jar

5.1.1 使用坐标导入jar包

  1. 中 pom.xml 中编写 标签
  2. 在 标签中使用 引入坐标
  3. 定义坐标的 groupId, artifactId,version
  4. 点击刷新按钮,使坐标生效

image.png

5.1.2 使用坐标导入jar包 - 快捷方式

  1. 中 pom.xml 中 按 alt + insert ,选择 Dependency

image.png

  1. 中弹出的面板中搜索对应坐标,然后双击选中对应坐标

image.png

  1. 点击刷新按钮,使坐标生效

5.1.3 自动导入设置,不需要中每次都进行手动刷新

  1. 选择 IDEA 中 File --> Settings
  2. 中弹出的面板中点击 Build Tools
  3. 选择 Any changes ,点击ok即可生效

image.png

5.2 依赖范围

通过设置坐标的范围(scope),可以设置对应 jar 包的作用范围: 编译环境、测试环境、运行环境
image.png

依赖范围编译classpath测试classpath运行classpath例子
compileYYYlogback
test-Y-Junit
providedYY-servlet-api
runtime-YYjdbc驱动
systemYY-存储中本地的jar
impotr引入 DependencyManagement

http://www.ppmy.cn/news/1528253.html

相关文章

mat (Eclipse Memory Analyzer Tool)使用以及详解

前言 在Java开发中&#xff0c;内存问题往往不易被发现&#xff0c;但它们可能导致应用性能下降甚至崩溃。Eclipse Memory Analyzer Tool&#xff08;MAT&#xff09;是一个强大的开源工具&#xff0c;专门用于分析Java堆转储&#xff08;heap dumps&#xff09;文件&#xff…

小程序服务零工市场

零工市场小程序有着信息发布、岗位匹配、线上接单、零工人员保障险参保、技能培训、费用结算、完工确认、服务评价、纠纷调解等功能&#xff0c;为求职者和雇主搭建一座高效、便捷、精准的对接桥梁。 用工单位通过小程序的“雇主找人”&#xff0c;发布招聘信息&#xff0c;找到…

拓扑排序专题篇

目录 前言 课程表 课程表II 课程表IV 火星词典 前言 拓扑排序是指对一个有向无环图的节点进行排序之后得到的序列&#xff0c;如果存在一条从节点A指向节点B的边&#xff0c;那么在拓扑排序的序列中节点A出现在节点B的前面。一个有向无环图可以有一个或多个拓扑排序序列&a…

JWT跨域认证

Session认证 用户认证的流程&#xff1a; 用户向服务器发送用户名和密码。 服务器验证通过后&#xff0c;在当前对话(session)里面保存相关数据&#xff0c;比如用户角色、登录时间等。 服务器向用户返回一个session_id,写入用户的Cookie。 用户随后的每一次请求&#xff0c;…

导电滑环在工业设备中的作用分析

导电滑环作为现代工业设备中的关键组件&#xff0c;广泛应用于各种机械和电子系统中。本文将探讨导电滑环的工作原理及其在不同应用领域中的重要作用。 导电滑环的工作原理主要基于电气传导与机械旋转的结合。导电滑环通常由环形导体和刷子组成&#xff0c;刷子紧贴在滑环表面…

前缀和与差分(二维)

二维前缀和 下面是一个二维数组&#xff0c;我们要求&#xff08;1&#xff0c;1&#xff09;到&#xff08;2&#xff0c;2&#xff09;区间内的所有元素的和&#xff0c;最原始的方法就是遍历每个元素然后一个一个加起来&#xff0c;此时时间复杂度为O(n*m)。 我们之前学过…

下载 B 站封面的正确方式

B 友们经常用一些很好看的图片作为视频封面&#xff0c;但是大部分都不会指出图片来源&#xff0c;为此我们可以下载封面原图&#xff0c;用于保存或者搜索源出处。 这里介绍几个我知道的方法&#xff0c;欢迎补充&#x1f914; ‍ 使用相关客户端 上一篇博客介绍了很多的能…

【C++篇】~类和对象(中)

类和对象&#xff08;中&#xff09; 1.类的默认成员函数​ 默认成员函数就是用户没有显式实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。一个类&#xff0c;我们不写的情况下编译器会默认生成以下6个默认成员函数&#xff0c;需要注意的是这6个中最重要的是前…