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

相关推荐
CoderYanger7 小时前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第二弹)
java·数据库·spring boot·spring·面试·java-ee·mybatis
CQU_JIAKE10 小时前
11.7[高体】
java·后端·spring
apcipot_rain11 小时前
C++转Java日记(04)
java·开发语言·c++
特立独行的猫A11 小时前
我给女儿写了个打字练习:一边敲键盘,一边把小学英语单词记牢
java·后端·python
憧憬成为java架构高手的小白13 小时前
LangGraph4j 实战(下)
java
天诰13 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
这个昵称不容易17 小时前
SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在
java·springboot·毕设
计算机毕设定制辅导-无忧学长17 小时前
《基于微信小程序的居家医疗陪护预约系统设计与实现》
java·spring boot·微信小程序·uniapp·居家医疗陪护预约系统
文丑颜不良啊18 小时前
LeetCode2221~2240题目解析
java·leetcode
秋饼18 小时前
Computer Use Agent Java 落地实战:感知-行动循环、执行器与安全围栏生产级实现
java·ai·技术分享·后端开发