JavaWeb:Maven 讲解

1、Maven 简介

什么是 Maven

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

  1. 提供了一套标准化的项目结构
  2. 提供了一套依赖管理机制(不需要再去手动导入 jar 包)
  3. 提供了一套依赖标准化的构建流程(编译,测试,打包,发布…..)

Maven 标准化项目结构

Maven 提供了一套标准化项目结构,所有的 IDE 使用 Maven 构建的项目结构完全一样,所有 IDE 创建的 Maven 项目也可以通用

JavaWeb:Maven 讲解
image-20231102205711547

2、Maven 仓库

仓库的分类

  1. 本地仓库:自己计算机上的一个目录

  2. 中央仓库:由 Mavne 团队维护的全球唯一的仓库

    地址:https://repo1.maven.org/maven2

  3. 远程仓库(私服):一般由公司团队搭建的私有仓库

执行流程

当项目中使用坐标引入对应依赖 jar 包后,首先会查找本地仓库是否有对应的 jar 包

  • 如果没有,则去中央仓库中下载对应的 jar 包到本地仓库
  • 如果有,则在项目直接引用

搭建远程仓库,jar 包的查找顺序为

  • 本地仓库 –> 远程仓库 –> 中央仓库

3、Maven 安装

Maven 属于绿色软件,解压即可安装

下载地址:Maven – 下载 Apache Maven

  • 关注两个文件
    1. bin/mvn.cmd 可执行文件
    2. conf/settings.xml 配置文件
  • 注意不要放在中文目录下

4、Maven 的配置

Maven 三种配置方法

  1. 配置本地仓库:修改 conf/settings.xml 中 55 行的为一个指定目录

    <localRepository>D:softwaremvn_resp</localRepository>
  2. 配置阿里云私服:修改 conf/settings.xml 中 160 行标签,为其添加如下子标签

        <mirror>
          <id>nexus-aliyun</id>
          <mirrorOf>central</mirrorOf>
          <name>Nexus aliyun</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        </mirror>
  3. Maven 默认使用的是 jdk1.5 版本,在 188 行标签可以修改,不改也一样可以,向上兼容的

    <profile>
        <id>jdk-1.8</id>
        <activation>
            <activeByDefault>true</activeByDefault>
            <jdk>1.8</jdk>
        </activation>
        <properties>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
            <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
        </properties>
    </profile>

5、IDEA 配置 Maven

点击 file -> Settings -> Build Execution Deployment -> Build Tools -> Maven

填入自己的 Mavne 地址

JavaWeb:Maven 讲解
image-20231103092253399

6、Maven 坐标

什么是坐标

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

Maven 坐标的主要组成

  • groupId:定义当前 Maven 项目属于组织名称(通常反写域名)
  • artifactId:定义当前 Mavne 项目名称
  • version:定义当前项目版本号

7、IDEA 创建 Mavne 模块

创建步骤

  1. 创建模块,选择 Maven,点击 Next
  2. 填写模块名称,坐标信息,点击 finish,创建完成
  3. 编写 HelloWorld,测试运行

创建过程

选择新建项目点击 Maven

JavaWeb:Maven 讲解
image-20231103094439177

下方勾选可以修改模块名称和坐标信息

JavaWeb:Maven 讲解
image-20231103094519088

再点完成即可

JavaWeb:Maven 讲解
image-20231103094551522

8、Maven 依赖管理

使用坐标导入 jar 包

  1. 在 pom.xml 中编写标签

        <dependencies>

        </dependencies>
  2. 标签中使用引入坐标

    <dependencies>
        <dependency>
        </dependency>
    </dependencies>
  3. 定义坐标的 grupId,artifactld,version

        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.46</version>
            </dependency>
        </dependencies>
  4. 点击刷新按钮,使坐标生效

    JavaWeb:Maven 讲解
    image-20231103102157562

使用快捷方式引入 jar 包

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

    JavaWeb:Maven 讲解
    image-20231103102529924
  2. 在弹出的面板中搜索对应坐标,然后双击选中对应坐标

    JavaWeb:Maven 讲解
    image-20231103102610833
  3. 点击刷新按钮,使坐标生效

    JavaWeb:Maven 讲解
    image-20231103102704242

在线查询 jar 包依赖

  1. 通过官网:https://mvnrepository.com 搜索依赖

    JavaWeb:Maven 讲解
    image-20231103103055376
  2. 选择对应的资源复制到 pom.xml 文件中即可

    JavaWeb:Maven 讲解
    image-20231103103258702

注意:同样的 jar 包,后面配的会把前面配的替代掉

9、Maven 常用命令

IDEA 操作 Maven 命令

命令 说明
mvn clean 删除 target 目录
mvn compile 编译 main 目录
mvn test 执行 test 目录
mvn package 打包到 target 目录下
mvn install 安装到本地仓库中

案例演示

  1. mvn clean

    JavaWeb:Maven 讲解
    image-20231103144833351
    JavaWeb:Maven 讲解
    image-20231103144924306
  2. mvn compile

    编译之后又会重新生成 target 目录

    JavaWeb:Maven 讲解
    image-20231103145036723
  3. mvn test

    比较少在这边进行测试

    JavaWeb:Maven 讲解
    image-20231103145719267
  4. mvn package

    打包完会在 target 生成一个 jar 包

    JavaWeb:Maven 讲解
    image-20231103145940907

10、Maven 的生命周期

  1. Maven 构建项目生命周期描述的是一次构建过程经历了多少事件

  2. Maven 对项目构建的生命周期划分为 3 套

    • clean :清理工作
    • default:核心工作,例如:编译,测试,打包,安装等
    • site:产生报告,发布站点
  3. 在构建过程中是没办法跳过的

    例如:我们进行测试,是没办法跳过编译,直接进行测试的

  4. 整体生命周期

    JavaWeb:Maven 讲解
    image-20231103152139687

11、Maven 依赖管理

通过设置坐标的依赖范围(scope)可以设置对应 jar 包的作用范围

不设置的时候,默认就是 compile 的范围也就是所有路径都能使用

JavaWeb:Maven 讲解
image-20231103152605869
依赖范围 编译类路径(main) 测试类路径(test) 运行类路径(target) 例子
compile Y Y Y logback
test Y Junit
provided Y Y servlet-api
runtime Y Y jdbc 驱动

代码演示

  • 导入 druid

     <!--        druid连接池依赖-->
    <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>druid</artifactId>
         <version>1.0.9</version>
         <scope>compile</scope>
    </dependency>
  • 在什么都没有配置的情况下,main 目录和 test 目录都是能用的

    JavaWeb:Maven 讲解
    image-20231103153646837
  • 在 pom.xml 文件中添加作用域

            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.0.9</version>
                <scope>test</scope>
            </dependency>
  • 发现只有 test 目录能用了

    JavaWeb:Maven 讲解
    image-20231103153842008

原文始发于微信公众号(小林学编程):JavaWeb:Maven 讲解

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/219368.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!