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(实际执行插件)。

相关推荐
洋不写bug1 小时前
二叉树(二) 常见基础操作解析|结点数、树高、查找结点、判断完全二叉树
java·开发语言·数据结构·完全二叉树·二叉树结点数·树高·查找结点
菠萝加点糖2 小时前
Maven 坐标系统说明
java·maven
hm宋2 小时前
Canal 升级 jar 包操作文档(以升级 FastJSON 为例)
java·canal·jar
后台模板学习2 小时前
学习的心态高频面试题
java·数据库·学习
用户3126874877202 小时前
线程池到底怎么管理线程的?从 ThreadPoolExecutor 到拒绝策略全链路拆解
java
cpolar技术支持2 小时前
Kafka Streams 窗口统计怎么验收:本地跑订单流聚合,用 cpolar 给同事看只读结果页
java·docker·kafka·cpolar·kafka streams
爱读源码的大都督3 小时前
DeepSeek面试官问:生产RAG系统回答不准确,该如何定位和优化?这样回答,能让面试官当场给你Offer!
java·后端·python
杨运交3 小时前
[069][公共模块]Spring Boot 全局异常处理与参数校验实战(下):校验异常精细化处理与 WebFlux 适配
java·spring boot·后端
Raas1003 小时前
MAI Gateway(魔芋企业级AI网关)对比分析:AI网关和OpenRouter区别?企业级能力差距一览
java·服务器·网络·人工智能·gateway·ai网关·mai gateway