Maven 基础知识总结

Maven 的基础

官网地址
官网:http://maven.apache.org/ 
Maven 定义
定义:Maven 是一个项目管理和构建的工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。
Maven 的功能
- 提供标准化的项目结构
- 提供标准化的构建流程(编译,测试,打包,发布......)
- 提供依赖管理机制
提供标准化的项目结构:

	Maven提供了一套标准化的项目结构,所有的IDE使用Maven构建的项目完全一样,所以IDE创建的Maven项目可以通用
提供标准化的构建流程(编译,测试,打包,发布......):

	开发了一套系统,代码需要进行编译、测试、打包、发布,这些操作如果需要反复进行就显得特别麻烦,而Maven提供了一套简单的命令来完成项目构建。
提供依赖管理机制:

	依赖管理其实就是管理你项目所依赖的第三方资源(jar包、插件)。如之前我们项目中需要使用JDBC和Druid的话,就需要去网上下载对应的依赖包,复制到项目中,还要将jar包加入工作环境这一系列的操作

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

Maven 的安装

资料提供,百度网盘地址:
链接:https://pan.baidu.com/s/19u6cmNXlkdXCHcdM5mX9pw 
提取码:rzd7
解压 apache-maven-3.6.1.rar 既安装完成

解压后相应目录说明

Maven 环境变量 Path 的配置

验证Maven 环境变量配置成功

Maven 仓库的概念

Maven 本地仓库
定义:自己计算机上的一个目录
Maven 中央仓库
定义:由Maven团队维护的全球唯一的仓库

仓库地址:https://repo1.maven.org/maven2/
Maven 第三方仓库(私服)
定义:一般由公司团队搭建的私有仓库
Maven 配置本地仓库

<localRepository>D:\maven_3-6-1\mvn_project</localRepository>

修改 conf/settings.xml 中的 <localRepository> 为一个指定目录作为本地仓库,用来存储jar包。

当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包。
- 如果有,则在项目直接引用。
- 如果没有,则去中央仓库中下载对应的jar包到本地仓库。
Maven 配置阿里云私服

<mirrors>
  <mirror>
	<id>aliyunmaven</id>
	<mirrorOf>*</mirrorOf>
	<name>阿里云公共仓库</name>
	<url>https://maven.aliyun.com/repository/public</url>
  </mirror>
</mirrors>

IDEA 配置Maven 构建第一个测试项目

配置IDEA 对应的Maven 环境
  • 点击idea左上角 File 选项, 选择 Settings 选项配置
  • 搜索 框中 搜索maven 进行 项目的 maven 相应配置操作

  • 完成上述操作后,点击idea左上角 File 选项, 选择 New 选项 ,选择 Project... 新建一个maven 项目

  • 进行maven 项目的初始化设置

  • 验证 maven项目 创建成功

  • 配置项目对象【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>com.wanghao</groupId>
    <artifactId>maven-project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- end -->
    
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

</project>
- groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.wanghao)
- artifactId:定义当前Maven项目名称(通常是模块名称,例如 maven-project)
- version:定义当前项目版本号
  • 配置依赖管理【pom.xml】

    <dependencies>
        <!-- 导入 mysql 驱动jar包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.32</version>
        </dependency>
        <!-- end -->

        <!-- 导入 druid 驱动jar包-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.12</version>
        </dependency>
        <!-- end -->
        
         <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>

    </dependencies>
在项目的 pom.xml 中编写 <dependencies> 标签
在 <dependencies> 标签中 使用 <dependency> 引入坐标

- groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.wanghao)
- artifactId:定义当前Maven项目名称(通常是模块名称,例如 maven-project)
- version:定义当前项目版本号
- scope:设置坐标的依赖范围,设置 对应jar包的作用范围:编译环境、测试环境、运行环境
  • scope 坐标的依赖范围:

- compile:作用于编译环境、测试环境、运行环境。
- test:作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值
- provided:作用于编译环境、测试环境。
- runtime:作用于测试环境、运行环境。jdbc驱动一般将 scope 设置为该值,当然不设置也没有任何问题 

ps:如果引入坐标不指定 scope 标签时,默认就是 compile 值。以后大部分jar包都是使用默认值。

Maven 基本使用

Maven 模型

- 项目对象模型 (Project Object Model)
- 依赖管理模型 (Dependency)
- 插件 (Plugin)
测试项目创建,基于上面已经创建好的 maven-project 项目,创建 HelloWorld.java 和 TestMaven.java

Maven 常用命令
compile 插件
compile 编译

git地址:https://github.com/apache/maven-compiler-plugin/

在项目的同目录下,会出现一个 target 目录文件。编译后的字节码文件就放在该目录下。
clean 插件
clean 清理。

git地址:https://github.com/apache/maven-clean-plugin/

test 插件
test 测试 

mvn test:该命令会执行所有的测试代码

package 插件
package 打包
mvn package:在项目的 terget 目录下有一个jar包(将当前项目打成的jar包)

install 插件
install 安装
mvn install:该命令会将当前项目打成jar包,并安装到本地仓库。执行完上述命令后到本地仓库查看结果如下:

Maven 生命周期

posted on 2022-09-22 14:24  cloud_wh  阅读(145)  评论(0编辑  收藏  举报

导航