maven标签日常总结

1.<packaging>pom</packaging>:父工程,不生成 jar,负责聚合子模块、统一版本管理。

2.<modules>:罗列所有子模块,执行 mvn 命令会批量构建全部子模块。

3.Maven 原生不允许 version 直接使用变量,必须搭配 flatten‑maven‑plugin。

4.<properties>:统一管理 JDK 版本、编码、插件版本、框架版本,一处修改全项目生效。

5.<parent></parent>子模块完整继承父 pom 全部内容:properties、dependencyManagement、pluginManagement、插件、配置全部拿过来。

硬限制:只能有 1 个父工程,不能同时继承 A、B 两个父 pom。

6.<dependencyManagement>只声明版本,不会实际引入依赖,子模块写 dependency 可以省略 version。

只锁定插件版本,不会执行插件;子模块声明 plugin 就继承版本,不用写 version。

对比:

dependencyManagement / pluginManagement:管控版本,不执行 / 不引入;

<dependencies> / <build><plugins>:真正引入依赖、真正执行插件。

7.scope=import,不是继承,是 "把别人 pom 里面的 dependencyManagement 复制粘贴到我当前 pom"

硬性规则:只能写在 的 dependencies 里面,外面写无效。可以写多个 import,一次性把 A、B、C 多个 pom 的dependencyManagement全部合并进来。

java 复制代码
<dependencyManagement>
    <!-- 导入本项目内部依赖管理pom -->
    <dependency>
        <groupId>com.myxrk</groupId>
        <artifactId>mobile-center-dependencies</artifactId>
        <version>${revision}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    <!-- 导入公司公共组件依赖管理pom -->
    <dependency>
        <groupId>com.kuihai</groupId>
        <artifactId>kuihai-dependencies</artifactId>
        <version>2.3.0</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
</dependencyManagement>

8.父模块,也可以实际导入依赖jar,比如:,但是这些jar都会传递到子模块中去。企业开发都禁止父模块导入jar,父模块只做聚合模块、

统一版本管理(dependencyManagement)、统一插件管理(pluginManagement)

java 复制代码
<dependencies>
  <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring‑context</artifactId>
  </dependency>
</dependencies>
  1. <dependencies>相关标签

    子标签:

    <groupId>、<artifactId>、<version>:坐标

    <scope>:依赖范围

    compile【默认】:编译、测试、运行都生效

    test:仅单元测试生效(junit),打包不会进去

    provided:编译需要,运行环境容器已经提供,打包不打进 jar(servlet‑api)

    runtime:运行、测试需要,编译阶段不需要(mysql 驱动)

    <optional>true</optional>:可选依赖,不会向下传递,子模块想用需要自己重新引入。

    <exclusions>:排除传递依赖,解决 jar 包冲突!

java 复制代码
<build></build>

控制 Maven 构建全过程:编译、资源复制、插件执行、输出目录、打包。

如果完全不写 ,Maven 会使用一套内置默认配置,大部分简单 SpringBoot 项目,不写 build 也能跑。

✅ 一旦你要修改构建默认行为,就要写 build 标签。

当需要配置插件、自定义资源过滤、修改源码输出目录时,必须声明 build 标签。内部区分pluginManagement(管理插件版本)和plugins(实际执行插件)。

相关推荐
考虑考虑8 小时前
JDK26中的Map.ofLazy
java·后端·java ee
鶴哥只手遮天12 小时前
Spring AI 2.0.1 深度解析-第 14 章 MCP 服务端(上):注解式实现与工具来源
java·人工智能·开源
鶴哥只手遮天12 小时前
Spring AI 2.0.1 深度解析-第 15 章 MCP 服务端(下):三种协议形态、Streamable 传输与状态管理
java·人工智能·开源
鶴哥只手遮天12 小时前
Spring AI 2.0.1 深度解析-第 16 章 向量存储(上):`VectorStore` 接口体系、`BatchingStrategy`
java·人工智能·开源
鶴哥只手遮天12 小时前
Spring AI 2.0.1 深度解析-第 12 章 工具循环的流式形态、Usage 累加与扩展体系
java·人工智能·开源
鶴哥只手遮天12 小时前
Spring AI 2.0.1 深度解析-第 23 章 模型供应商实现:从 `OpenAiSetup` 到 Bedrock
java·人工智能·开源
鶴哥只手遮天12 小时前
Spring AI 2.0.1 深度解析-第 06 章 内置 Advisor 全景:13 个实现逐个剖到源码级
java·人工智能·开源
鶴哥只手遮天12 小时前
Spring AI 2.0.1 深度解析-第 03 章 消息体系与 Prompt:不可变模型、`ChatOptions` 与模板渲染
java·人工智能·开源
鶴哥只手遮天12 小时前
Spring AI 2.0.1 深度解析-第 24 章 生产实践与 2.x 迁移:陷阱清单、AOT 与调优
java·人工智能·开源
鶴哥只手遮天12 小时前
Spring AI 2.0.1 深度解析-第 10 章 工具调用(中):执行链路、结果转换与工具限制
java·人工智能·开源