自学内容网 自学内容网

Maven

概述

        Maven是一个强大的项目管理和构建自动化工具,主要用于Java项目。它由Apache软件基金会开发,旨在简化构建过程、依赖管理和项目信息管理。以下是Maven的主要作用:

1、依赖管理:Maven可以帮助你管理项目依赖的第三方库。通过在POM(project object model)文件中声明依赖,Maven会自动下载并引入这些依赖,避免了版本冲突问题、手动管理的麻烦。

        如果手动下载jar包并导入,不仅面临下载麻烦,更新版本、替换jar包时还需要更换大量资源,费时费力。
        使用Maven后,我们不需要导入任何jar包,只需要在Maven工程的pom.xml配置文件中添加依赖描述信息即可:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>/*依赖名称*/</artifactId>
            <scope>/*依赖版本*/</scope>
        </dependency>
    </dependencies>

        添加后系统会在仓库中查找相应的资源并添加,仓库有三种:

  • 本地仓库:本地用于存储jar包的目录
  • 中央仓库:由 Maven 团队维护的全球唯一的仓库,地址:Central Repository:
  • 远程仓库(私服):一般由公司团队搭建的私有仓库

        系统会先在本地仓库查找,有则添加,无则连接中央仓库下载,但因中央仓库为海外地址,下载速度较慢,我们选择引入远程仓库作为媒介,查找顺序:本地仓库->远程仓库->中央仓库

2、统一项目结构:因为开发软件的不同,所以早期的java项目会出现同一文件不同版本无法识别的情况,而Maven提供了一套标准的项目结构,使项目无论在哪个编译器中都可正常运行

  • Maven构建的项目
    • src
      • main:实际项目资源
        • java:java源代码目录
        • resources:配置文件目录
      • test:测试项目资源
        • java
        • resources
      • pom.xml:项目配置文件

3、项目构建:Maven提供了一套跨平台标准的项目构建流程,原始java文件需要 编译—测试—打包—发布 一系列流程,较为繁琐。而通过Maven我们可以输入对应的指令,系统会自动进行相应的操作

安装与配置

        1、搜索maven安装包并下载解压
        2、配置本地仓库:修改conf/settings.xml中的<localRepository>为一个指定目录

<localRepository>/*指定路径*/</localRepository>

        3、配置阿里云私服:修改conf/settings.xml中的<mirrors>标签,为其添加如下子标签:

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

        4、配置环境变量

        新建系统变量:变量名:MAVEN_HOME,变量值:安装目录,再将path环境变量中,添加 %MAVEN_HOME%\bin 

IDEA集成Maven

        创建Maven项目

        选择文件→新建→项目,在Spring initializer 选项中勾选java和maven,并

        在 src→main→java目录下创建java类,例 com.example.myproject,其中 com.example 为包名,myproject 为类名
        此时test目录下的resources文件因为不常用,所以并未创建,我们可以右键java目录→directory,会出现快捷创建resources文件的选项

        此时我们补全代码并运行,目录下会自动生成 target 文件用于存放java代码编译后产生的字节码文件

        坐标

        在Maven中,坐标(Coordinate)是资源的唯一标识,通过该坐标可以唯一定位资源位置。坐标由以下三个主要元素组成:

  • groupId:定义项目所在的组或组织。通常采用反向域名表示法,例如 com.example。
  • artifactId:定义Maven项目名称。这个ID应该是小写的,
  • version:定义项目版本号。版本号通常包含三个数字,以点分隔,例如 1.0.0
    <groupId>org.example</groupId>
    <artifactId>maven</artifactId>
    <version>0.0.1-SNAPSHOT</version>

        IDEA导入Maven项目

        导入Maven项目有两种方式

方式一:
        点击idea右侧Maven面板,点击+号,选中对应的pom.xml文件,双击即可。
        如果没有Maven面板,点击View→Appearance→Tool Windows Bars

方式二:
        点击File→Project Structure→+→import Module→选择pom.xml→OK

依赖管理

        依赖配置

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

        在Maven项目中,依赖通过在项目的pom.xml文件中的<dependencies>部分声明,可声明多个依赖,而每个依赖项都使用<dependency>标签包裹:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

         修改完依赖后点击按钮,等待下载完成后依赖即可生效。

        依赖传递

        Maven具有依赖传递特性,这意味着如果你声明了一个依赖,它所依赖的库也会被自动添加到项目中。
        例如,如果你依赖了projectA,而projectA又依赖于projectB和其他jar包,那么projectB及其依赖,还有其他projectA依赖的jar包也会被添加到你的项目中。

        其中 projectB 和第一个jar包为直接依赖,其余为间接依赖

  • 直接依赖:项目pom.xml中明确声明的依赖,是项目功能实现所必需的。
  • 间接依赖:项目通过直接依赖引入的其他库,不是项目直接声明的,但同样需要下载。

        依赖排除

        如果需要排除某个传递性依赖,可以使用<exclusions>标签。其与添加依赖相似,但无需使用版本号,可通过<scope>......</scope>设置其作用范围:

scope值主程序(main)测试程序(test)打包运行(package)
compile(默认)
test
provided
runtime
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>5.3.10</version>
    <!--排除依赖-->
  <exclusions>
    <exclusion>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <scope>test</scope>
    </exclusion>
  </exclusions>
</dependency>

        生命周期

        Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一。它定义了三个内置的生命周期,每个生命周期包含了一系列的阶段(Phase),这些阶段是构建项目的有序步骤,我们选取其中的五个较为重要的阶段来学习(在同一套生命周期中,阶段是有先后顺序的,后面的阶段是需要依赖于前面的阶段)。

1. 清理(Clean)生命周期:清理工作

  • clean:清理上一次构建生成的文件。

2. 默认(Default)生命周期:核心工作,如:编译、测试、打包、安装、部署等

  • compile:编译项目的源代码。
  • test:使用适当的单元测试框架(如JUnit)运行单元测试
  • package:将编译后的代码打包成可分发格式,如JAR、WAR等。
  • install:将包安装到本地仓库,供本地其他项目使用。

3. 站点(Site)生命周期:生成报告,发布站点等

执行

        执行指定的生命周期有两种方法

一、点击idea右侧的Maven工具栏,双击执行所需要的生命周期,也可以选择跳过test阶段 

二、在命令行中,通过指令执行:打开项目所在目录,输入cmd,输入mvn clean或其他指令执行程序。

实际上Maven的生命周期及其各个阶段都是抽象的概念,其并不执行具体的操作,其操作由与其绑定的插件来完成,因为Maven本身就是一个插件执行框架 

 


原文地址:https://blog.csdn.net/qq_65501197/article/details/143428399

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!