IDEA maven父工程pom.xml使用及说明

 更新时间:2026年01月30日 14:41:45   作者:JD强子  
MavenPOM是Maven工程的基本工作单元,父工程的pom文件中使用<packaging>pom</packaging>表示使用maven分模块管理,父级项目通常使用pom作为packaging,并通过<properties>和<dependencyManagement>统一管理项目的版本号和依赖

Maven POM ( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元。

父工程的pom文件

<?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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mszlu</groupId>
    <artifactId>shop-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>shop-common</module>
        <module>shop_user</module>
        <module>shop-goods</module>
        <module>shop-order</module>
        <module>shop-app</module>
        <module>shop-base</module>
    </modules>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
    </parent>

    <packaging>pom</packaging>

    <properties>
        <!-- Spring Cloud -->
        <spring.cloud.version>Hoxton.SR9</spring.cloud.version>
        <!-- Apache Dubbo -->
        <dubbo.version>2.7.8</dubbo.version>
        <curator.version>4.0.1</curator.version>
        <!-- Apache RocketMQ -->
        <rocketmq.starter.version>2.0.2</rocketmq.starter.version>
        <spring.cloud.alibaba>2.2.5.RELEASE</spring.cloud.alibaba>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring.cloud.alibaba}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

module

父工程下的子工程module

<packaging>pom</packaging>

以下配置<packaging>pom</packaging>的意思是使用maven分模块管理,都会有一个父级项目,pom文件一个重要的属性就是packaging(打包类型)。

一般来说所有的父级项目的packaging都为pom,packaging默认类型jar类型,如果不做配置,maven会将该项目打成jar包。

<properties>和<dependencyManagement>

使用dependencyManagement结合properties可以统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,不用每个模块项目都弄一个版本号,不利于管理,当需要变更版本号的时候只需要在父类容器里更新,不需要任何一个子项目的修改;

如果某个子项目需要另外一个特殊的版本号时,只需要在自己的模块dependencies中声明一个版本号即可。子类就会使用子类声明的版本号,不继承于父类版本号。

dependencies

如果父工程pom.xml在<dependencyManagement>外用<dependencies>引入的依赖子工程可直接使用,无需再引入

子工程的pom文件

<?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">
    <parent>
        <artifactId>shop-parent</artifactId>
        <groupId>com.mszlu</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>shop-app</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.mszlu</groupId>
            <artifactId>shop-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.76</version>
        </dependency>

    </dependencies>
</project>

dependencies引入依赖

dependencyManagement里只是声明依赖,并不自动实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

IDEA Maven pom.xml 变灰 出现删除线

项目中的pom.xml文件被设置在maven忽略清单

解决方案

如图 将变灰出现删除线的文件 取消选中

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 浅析 ArrayList 和 LinkedList 有什么区别

    浅析 ArrayList 和 LinkedList 有什么区别

    ArrayList 和 LinkedList 有什么区别,是面试官非常喜欢问的一个问题。今天通过本文给大家详细介绍下,感兴趣的朋友跟随小编一起看看吧
    2020-10-10
  • Java面试必备之AQS阻塞队列和条件队列

    Java面试必备之AQS阻塞队列和条件队列

    我们大概知道AQS就是一个框架,把很多功能都给实现了(比如入队规则,唤醒节点中的线程等),我们如果要使用的话只需要实现其中的一些方法(比如tryAcquire等)就行了!这次主要说说AQS中阻塞队列的的入队规则还有条件变量,需要的朋友可以参考下
    2021-06-06
  • Spring Boot延迟执行实现方法

    Spring Boot延迟执行实现方法

    本文介绍了在Spring Boot项目中延迟执行方法的实现,以及延迟执行下声明式事务和编程式事务的使用情况,感兴趣的朋友一起看看吧
    2020-12-12
  • java并发包JUC同步器框架AQS框架原文翻译

    java并发包JUC同步器框架AQS框架原文翻译

    发现了一篇JDK作者的论文《The java.util.concurrent Synchronizer Framework》主要描述了作者对AbstractQueuedSynchronizer同步器框架的设计和实现。权威性毋庸置疑!自然需要拜读一下,配上中文翻译,希望大家能有所收获
    2022-02-02
  • Mybatis查询条件包含List的情况说明

    Mybatis查询条件包含List的情况说明

    这篇文章主要介绍了Mybatis 查询条件包含List的情况,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 解决spring boot 1.5.4 配置多数据源的问题

    解决spring boot 1.5.4 配置多数据源的问题

    下面小编就为大家带来一篇解决spring boot 1.5.4 配置多数据源的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • idea的使用之关于tomcat热部署的教程

    idea的使用之关于tomcat热部署的教程

    这篇文章主要介绍了idea的使用之关于tomcat热部署的教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 谈谈对Java中的volatile的理解

    谈谈对Java中的volatile的理解

    这篇文章主要介绍了对Java中的volatile的理解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • java发起http请求调用post与get接口的方法实例

    java发起http请求调用post与get接口的方法实例

    在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适,下面这篇文章主要给大家介绍了关于java发起http请求调用post与get接口的相关资料,需要的朋友可以参考下
    2022-08-08
  • Java学习笔记之Maven篇

    Java学习笔记之Maven篇

    今天来回顾下Java学习笔记,文中对maven的核心,maven的结构以及maven能做什么都作出了详细的解释,,需要的朋友可以参考下
    2021-05-05

最新评论