Maven - 5 分钟快速通关

本文详细介绍了Maven的基础语法,包括POM文件结构、依赖管理、聚合模块的概念及其好处,以及继承机制和自定义属性的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、Maven

1.1、 基础语法

1.2、聚合

1.3、继承

1.4、自定义属性


一、Maven


1.1、 基础语法

<?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">
    <!--指定 pom 模型版本-->
    <modelVersion>4.0.0</modelVersion>

    <!--组织 id-->
    <groupId>cn.itcast.demo</groupId>
    <!--项目id-->
    <artifactId>cloud-demo</artifactId>
    <!--版本号: release(发行版本)  snapshot(开发版本)-->
    <version>1.0</version>

    <!--设置当前工程的所有依赖-->
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.2.5.RELEASE</version>
        </dependency>
    </dependencies>

    <!--构件-->
    <build>
        <!--设置插件-->
        <plugins>
            <!--具体的插件配置-->
            <plugin>
            </plugin>
        </plugins>
    </build>

a)坐标,Maven 中用于描述仓库资源的位置,如下构成:

  1. groupId:定义当前 Maven 项目组织名称,例如 com.mysql
  2. artifactId:定义当前 Maven 项目名称(通常时模块名称,例如 mysql-connector-java )
  3. version:定义当前项目的版本号.

b)依赖配置 dependencies,依赖当前项目运行所需的 jar 包,一个项目可以设置多个依赖dependency.

如果想要主动断开依赖资源(例如一个依赖的内部又连接了其他依赖),就可以使用 exclusion 来排除(要排除的依赖无需指定版本号).

        <dependency>
            <groupId>cn.itcast.demo</groupId>
            <artifactId>feign-api</artifactId>
            <version>1.0</version>
            <exclusions>
                <exclusion>
                    <groupId>cn.itcast.demo</groupId>
                    <artifactId>feign-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

c)版本:

SNAPSHOT(快照版本):就是一个测试阶段的版本,会随着开发的进行不断更新.

RELEASE(发布版本): 项目开发到一个稳定的版本,即使进行功能的后续开发,也不会改变当前发布版本内容,这种版本就是发布版本.

1.2、聚合

概念:使用一个“总工程”(一般是父工程)将各个“模块工程”(一般是子工程)汇集起来,作为一个整体对应完整的项目。

好处:

  1. 一键执行 Maven 命令:很多构建命令都可以在“总工程”中一键执行
  2. 配置聚合之后,各个模块工程会在总工程中展示一个列表,让项目中的各个模块一目了然.

Ps:微服务项目中体现的淋漓尽致

使用方式如下:

a)在父工程中的 pom.xml 文件中,定义打包类型为 pom.

    <packaging>pom</packaging>

b)定义当前模块进行构件时关联的其他模块名称.

    <modules>
        <module>user-service</module>
        <module>order-service</module>
        <module>eureka-server</module>
        <module>feign-api</module>
        <module>gateway</module>
    </modules>

Ps:参与聚合的模块最终的执行顺序和模块间的依赖关系有关,与配置顺序无关.

1.3、继承

概念:A 模块(子工程)继承 B 模块(父工程),本质上就是 A 模块中的 pom.xml 文件继承了 B 模块的 pom.xml 文件.

好处:在每一个 module 中各自维护各自的依赖容易发生出入,不易管理,比如在父工程管理的所有模块中,他们因该使用通过一版本的 jar 包,却由于各自管理,容易出现出入.  因此我们可以在父工程中通过 <dependencyManagement> 标签定义好依赖规范,让这些子工程去继承他,这样,子工程再引入依赖时就无需指定版本号(会通过父工程管理依赖寻找所需版本).

使用方式如下:

a)在父工程中定义依赖管理.

    <dependencyManagement>
        <dependencies>

            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

        </dependencies>
    </dependencyManagement>

Ps:dependencyManagement 只是声明了依赖,并没有真正引入.

b)在子工程中声明父工程坐标与对应的位置

    <parent>
        <artifactId>cloud-demo</artifactId>
        <groupId>cn.itcast.demo</groupId>
        <version>1.0</version>
        <!--父工程的 pom 文件-->
        <relativePath>../pom.xml</relativePath>
    </parent>

c)在子工程引入依赖,版本参照父工程的依赖,因此无需指定版本.

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

1.4、自定义属性

自定义属性,一般是为了统一管理依赖的版本号.  这就等同于定义变量,方便统一维护.

使用方式如下:

a)定义格式

    <properties>
        <自定义名称>指定版本</自定义名称>
    </properties>
    <properties>
        <mysql.version>5.1.47</mysql.version>
        <mybatis.version>2.1.1</mybatis.version>
    </properties>

b)调用格式

        <dependencies>
            <!-- mysql驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <!--mybatis-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
        </dependencies>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈亦康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值