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

相关推荐
现任明教教主~2 小时前
Thinkphp站群蜘蛛池SaaS系统YanyvSEO含多用户/积分/六大引擎计费/易支付对接
java·开发语言·spring
一条破秋裤2 小时前
Linux 线程创建:pthread_create 与基本回收
java·linux·运维
布吉岛的石头2 小时前
Java 程序员第 49 阶段5:BERT 预训练目标 MLM+NSP 的工程含义
java·人工智能·深度学习·bert·transformer
摇滚侠3 小时前
《On Java 中文版 基础卷》阅读笔记 对象无处不在 03
java·笔记·python
二十雨辰4 小时前
[学成在线]-01项目背景
java
弈栈录5 小时前
Java AI 应用的异步化与高并发设计
java·后端·架构
落魄实习生5 小时前
Agent Scope Java 2.x 系列【2】 ReActAgent
java·开发语言
艸肅5 小时前
Ubuntu 安装 JDK (含手动安装)
java·ubuntu·jdk
m0_734172425 小时前
Python字典计数怎样处理首次出现的键
java
卓怡学长6 小时前
w204基于springbo旅行社签证代理服务系统
java·spring boot·spring·intellij-idea