JavaWeb合集03-Maven

三、Maven

Maven是apache旗下的一一个开源项目,是一款用于管理和构建java项目的工具。

作用:

  1. 依赖管理:方便快捷的管理项目依赖的资源(jar包), 避免版本冲突问题。
  2. 统一项目结构:提供标准、统一的项目结构,maven项目。
  3. 项目构建:标准跨平台(Linux、Windows、MacOS)的自动化项目构建方式。提供统一指令(清理、编译、测试、打包、发布)

1、maven模型

通过插件对项目进行测试、打包等功能,打包和编译后的文件保存到target目录下

仓库:用于存储资源,管理各种jar包。

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

中央仓库:由Maven团队维护的全球唯一-的。 仓库地址: https://repo1.maven.org/maven2/

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

2、Maven的安装

2.1 Maven压缩包目录结构介绍:
  1. bin:存放的是可执行文件,如:测试、打包、编译等这些指令。
  2. conf:存放配置文件的,配置本地仓库和阿里云私服就就在settings.xml文件下配置
  3. lib:存放的是maven它所依赖的一些jar包文件,因为maven是基于java开发的
2.1 安装和配置步骤解析

1、修改配置本地仓库和远程仓库,直接在conf/settings.xml文件中,修改添加本地仓库路径和添加阿里云仓库。

xml 复制代码
    <!-- 本地仓库的位置 -->
    <localRepository>D:\programme_software\JavaRuntimeEnvironment\apache-maven-3.6.3\data</localRepository>
  
    
    <!-- 阿里云镜像 -->
    <mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <!-- https://maven.aliyun.com/repository/public/ -->
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>

2、环境变量的添加

复制maven的解压的路径 --> 桌面右击此电脑 --> 属性 --> 高级系统设置 --> 环境变量 --> 在系统变量下点击新建 --> 变量名为:MAVEN_HOME,变量值为:复制的maven路径 --> 确定 --> 单击变量名中的path --> 新建 --> 输入:%MAVEN_HOME%/bin --> 确定

可以去cmd命令窗口中输入:mvn -v 查看是否配置成功。

3、在IDEA中全局配置maven

1、不要打开任何项目进入IDEA-->Customize-->All settings--> Build,Execution,Deployment --> Build Tools --> Maven

2、设置IDEA使用本地安装的Maven,并修改配置文件及本地仓库路径

3、注意修改JRE版本:Runner下修改,和Compiler-->Java Compiler ,版本也改为JRE对应的版本。

3、Maven项目创建

4、Maven包管理文件

4.1 Maven坐标

Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置。使用坐标来定义项目或引入项目中需要的依赖。

Maven坐标主要组成:

  1. groupld: 定义当前Maven项目隶属组织名称(通常是域名反写,例如: com.yhzy)
  2. artifactld: 定义当前Maven项目名称(通常是模块名称,例如order-service、 goods-service )
  3. version: 定义当前项目版本号
4.2 依赖配置

依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖。

配置:

  1. 在pom.xml中编写标签
  2. 在标签中使用引入坐标
  3. 定义坐标的groupld, artifactld, version
  4. 点击刷新按钮,引入最新加入的坐标
xml 复制代码
    <dependencies>
        <!--Email-->
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.6.0</version>
        </dependency>
    </dependencies>

注意:

如果引入的依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖。(这个过程会 比较耗时,耐心等待)

如果不知道依赖的坐标信息,可以到 https:/ /mvnrepository.com 中搜索。

4.3 依赖传递

依赖具有传递性,也就是,一个项目导入的依赖,可能依赖其它的依赖。比如项目A依赖项目B,项目B依赖项目C,这时B就是A的直接依赖,C就是A的间接依赖,A项目中也会导入C作为依赖。

可以在pow.xml文件中右击-->Diagrams-->Show Dependencies...,进行可视化的查看依赖之间的关系。

直接依赖:在当前项目中通过依赖配置建立的依赖关系。

间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源。

4.3.1 排除依赖

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本。如果不希望进行间接依赖,可以在引入直接依赖中添加标签:

xml 复制代码
    <dependencies>
        <!--Email-->
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.6.0</version>
        </dependency>
        
        <!--排除依赖,可以添加多个-->
   <Kexclusions>
       <exclusion>
         <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </exclusion>
    </exclusions>
  </dependencies>

4.4 依赖范围

依赖的jar包,默认情况下,可以在任何地方使用。可以通过<scope...</ scope >设置其作用范围。

作用范围(默认):

  1. 主程序范围有效。 (main文件夹范围内)
  2. 测试程序范围有效。 (test文件夹范围内)
  3. 是否参 与打包运行。(package指令 范围内)

如果想要修改依赖范围,可以添加标签:

4.5 生命周期

Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一。

Maven中有3套相互独立的生命周期:

  1. clean: 清理工作。
  2. default: 核心工作,如:编译、测试、打包、安装、部署等。
  3. site:生成报告、发布站点等。

生命周期阶段常用的5个:

每套生命周期包含一些阶段 (phase) ,阶段是有顺序的,后面的阶段依赖于前面的阶段。

  1. clean:移除上一次构建生成的文件
  2. compile:编译项目源代码
  3. test:使用合适的单元测试框架运行测试(junit),运行所有单元测试
  4. package:将编译后的文件打包,如: jar、war等
  5. install:安装项目到本地仓库

执行指定生命周期的两种方式:

  1. 在idea中, 右侧的maven工具栏,选中对应的生命周期,双击执行。

  2. 在命令行中,通过命令执行,直接进入项目的文件夹的命令行。

    java 复制代码
    mvn clean
    
    mvn compile
    
    mvn package
    
    mvn test
相关推荐
Daniel 大东32 分钟前
BugJson因为json格式问题OOM怎么办
java·安全
Theodore_10225 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
冰帝海岸6 小时前
01-spring security认证笔记
java·笔记·spring
世间万物皆对象6 小时前
Spring Boot核心概念:日志管理
java·spring boot·单元测试
没书读了7 小时前
ssm框架-spring-spring声明式事务
java·数据库·spring
小二·7 小时前
java基础面试题笔记(基础篇)
java·笔记·python
开心工作室_kaic7 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
懒洋洋大魔王7 小时前
RocketMQ的使⽤
java·rocketmq·java-rocketmq
武子康7 小时前
Java-06 深入浅出 MyBatis - 一对一模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据仓库·sql·mybatis·springboot·springcloud
qq_17448285758 小时前
springboot基于微信小程序的旧衣回收系统的设计与实现
spring boot·后端·微信小程序