栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java之Maven

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java之Maven

文章目录
  • 1、Maven简介
  • 2、 Maven模型
  • 3、仓库
  • 4、Maven安装配置
  • 5、Maven基本使用
    • 5.1、Maven常用命令
    • 5.2、Maven常用命令演示
    • 5.3、Maven生命周期
  • 6、IDEA配置Maven
    • 6.1、IDEA配置Maven环境
    • 6.2、Maven坐标详解
    • 6.3、IDEA创建Maven项目
    • 6.4、IDEA导入Maven项目
    • 6.4、配置 Maven-Helper 插件
  • 7、依赖管理
    • 7.1、使用坐标引入jar包
    • 7.2、快捷导入jar包坐标
    • 7.3、自动导入设置
    • 7.4、依赖范围


1、Maven简介

Maven是专门用于管理和构建Java项目的工具。

主要功能:

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

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

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

标准化的项目结构:

  • 每一个开发工具(IDE)都有自己不同的项目结构,它们互相之间不通用。在eclipse中创建的目录,无法在idea中进行使用,造成了很大的不方便。
  • Maven提供了一套标准化的项目结构,所有的IDE使用Maven构建的项目完全一样,所以IDE创建的Maven项目可以通用。如下图右边就是Maven构建的项目结构。

标准化的构建流程:

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

依赖管理:

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

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

  • 上图右边所示就是mysql驱动包的坐标,在项目中只需要写这段配置,其他都不需要我们担心,Maven都帮我们进行操作了。

  • 市面上有很多构建工具,而Maven依旧还是主流构建工具,如下图是常用构建工具的使用占比。

简介

  • Apache Maven 是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。

  • 官网 :https://maven.apache.org/

2、 Maven模型
  • 项目对象模型 (Project Object Model)
  • 依赖管理模型(Dependency)
  • 插件(Plugin)

  • 如上图所示就是Maven的模型,而我们先看紫色框框起来的部分,他就是用来完成 标准化构建流程 。如我们需要编译,Maven提供了一个编译插件供我们使用,我们需要打包,Maven就提供了一个打包插件提供我们使用等。

    上图中紫色框起来的部分,项目对象模型就是将我们自己抽象成一个对象模型,有自己专属的坐标,如下图所示是一个Maven项目:

依赖管理模型则是使用坐标来描述当前项目依赖哪儿些第三方jar包,如下图所示

3、仓库

创建Maven项目,在项目中使用坐标来指定项目的依赖,那么依赖的jar包到底存储在什么地方呢?其实依赖jar包是存储在我们的本地仓库中。而项目运行时从本地仓库中拿需要的依赖jar包。

仓库分类:

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

  • 中央仓库:由Maven团队维护的全球唯一的仓库

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

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

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

  • 如果有,则在项目直接引用;

  • 如果没有,则去中央仓库中下载对应的jar包到本地仓库。

  • 如果还可以搭建远程仓库,将来jar包的查找顺序则变为:
    本地仓库–远程仓库–中央仓库
4、Maven安装配置
  • 解压缩即可

  • 配置环境变量


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

  • 配置阿里云私服
    中央仓库在国外,所以下载jar包速度可能比较慢,而阿里公司提供了一个远程仓库,里面基本也都有开源项目的jar包。
    修改 conf/settings.xml 中的 标签,为其添加如下子标签:

      
        alimaven  
        aliyun maven  
        http://maven.aliyun.com/nexus/content/groups/public/
        central          
    
    
5、Maven基本使用 5.1、Maven常用命令
  • compile :编译

  • clean:清理

  • test:测试

  • package:打包

  • install:安装

5.2、Maven常用命令演示
  • pom.xml所在目录下执行

一、编译命令

mvn compile

执行上述命令可以看到:

  • 从阿里云下载编译需要的插件的jar包,在本地仓库也能看到下载好的插件
  • 在项目下会生成一个 target 目录

二、清理命令

mvn clean
  • 从阿里云下载清理需要的插件jar包
  • 删除项目下的 target 目录

三、打包命令

mvn package
  • 从阿里云下载打包需要的插件jar包
  • 在项目的 terget 目录下有一个jar包(将当前项目打成的jar包)

四、测试命令
该命令会执行所有的测试代码。

mvn test  

五、安装命令
该命令会将当前项目打成jar包,并安装到本地仓库

mvn install
5.3、Maven生命周期

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

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

  • clean :清理工作。
  • default :核心工作,例如编译,测试,打包,安装等。
  • site : 产生报告,发布站点等。这套声明周期一般不会使用。

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

6、IDEA配置Maven 6.1、IDEA配置Maven环境

一、创建一个空项目


二、 File --> Settings

三、搜索maven,进入Maven界面并修改配置文件路径

6.2、Maven坐标详解

一、什么是坐标?

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

二、Maven 坐标主要组成

  • groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)
  • artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
  • version:定义当前项目版本号

如下图就是使用坐标表示一个项目:

   com.chuhe
   maven_demo
   1.0

注意:
上面所说的资源可以是插件、依赖、当前项目。
我们的项目如果被其他的项目依赖时,也是需要坐标来引入的。

6.3、IDEA创建Maven项目

一、创建模块,选择Maven



6.4、IDEA导入Maven项目
  • 选择右侧Maven面板,点击 + 号,选中对应项目的pom.xml文件,双击即可
  • 如果没有Maven面板,选择
    View --> Appearance --> Tool Window Bars

可以通过下图所示进行命令的操作:

6.4、配置 Maven-Helper 插件

一、IDEA中 File --> Settings

二、重启 IDEA后,右键菜单新增相关菜单选项

7、依赖管理 7.1、使用坐标引入jar包

步骤:

  • 在项目的 pom.xml 中编写 标签。
  • 在 标签中 使用 引入坐标。

  • 定义坐标的 groupId,artifactId,version。

  • 点击刷新按钮,使坐标生效
    -

注意:
具体的坐标我们可以到如下网站进行搜索
https://mvnrepository.com/

7.2、快捷导入jar包坐标
  • 在 pom.xml 中 按 alt + insert,选择 Dependency

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

  • 点击刷新按钮,使坐标生效。

7.3、自动导入设置
  • 上面每次操作都需要点击刷新按钮,让引入的坐标生效。当然我们也可以通过设置让其自动完成
  • 选择 IDEA中 File --> Settings
  • 在弹出的面板中找到 Build Tools,选择 Any changes
7.4、依赖范围
  • 通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境。

  • 如下图所示给 junit 依赖通过 scope 标签指定依赖的作用范围。 那么这个依赖就只能作用在测试环境,其他环境下不能使用。

scope 都可以有哪些取值呢?

依赖范围编译classpath测试classpath运行classpath例子
compileYYYlogback
test-Y-Junit
providedYY-servlet-api
runtime-YYjdbc驱动
systemYY-存储在本地的jar包
  • compile :作用于编译环境、测试环境、运行环境。
  • test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值
  • provided :作用于编译环境、测试环境。我们后面会学习 servlet-api ,在使用它时,必须将 scope 设置为该值,不然运行时就会报错
  • runtime : 作用于测试环境、运行环境。jdbc驱动一般将 scope 设置为该值,当然不设置也没有任何问题

注意:

  • 如果引入坐标不指定 scope 标签时,默认就是 compile 值。以后大部分jar包都是使用默认值。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/866428.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号