使用idea搭建maven多模块工程

本文介绍了如何使用IntelliJ IDEA搭建Maven多模块工程,详细讲解了从创建父工程、子模块,设置依赖关系,到配置packaging标签的全过程。此外,还提到了多模块间的调用注意事项,以及maven常用生命周期的理解和使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

大公司里经常会处理一些复杂的业务,如果搭建分散的几个项目,之间的调用可能需要用http请求,不仅效率低,部署也是件头疼的事情。这里推荐使用maven多模块架构,它经常用在比较大的项目中,可以按照业务模块分,也可以按照层次分模块,代码的可读性和可维护性都比较好。maven提供了非常丰富的标签和插件,idea工具更是把搭建maven多模块工程做得很简便。

二、搭建一个多模块工程

以下方的项目为例,项目结构为:
在这里插入图片描述

1、idea创建maven工程

  • Maven Project可以理解为一个单独、独立的工程,在打包为jar或者war时,可以单独运行。如果在pom文件中添加了对父工程的依赖,此时作为父工程的子工程。*

创建一个工程叫做国家介绍:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此工程框架已经搭建好了。

2、创建子级模块

** Maven Module也是一个maven 工程,但是却是一个子工程,必须有父工程存在并依赖,Maven Module不能抛弃父工程单独存在。**
在工程名上右键,new->Module
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击Finish,工程里的season模块便新建好了,且其父模块为introduction
在这里插入图片描述
按照上述方法,再创建food、pupulation、region等模块,在region模块中,创建west和east模块,完成后的工程如下(我改了工程名,叫practice):
在这里插入图片描述
自此,围绕文章上方的架构目标,已经搭建好工程。

3、多模块间设置依赖、调用关系

子模块中的maven是相互独立的,打包时也只会包含本module的包。但是在实际的应用中,多个模块肯定是有调用关系的,要不然也无需放在同一个工程里。多模块的一个特点便是单向调用。
依赖关系如下:
在这里插入图片描述
food、population、region、season作为introduction的子模块;
population模块需要调用food模块;
region模块需要调用population、food模块;
region的子模块包括west、east;

4、 几个注意事项:

1、项目中所有的groupId要一样

<groupId>com.hm.country</groupId>

2、packaging标签配置有讲究

目前packaging标签有3种配置:

<packaging>pom</packaging>
<packaging>jar</packaging>
<packaging>war</packaging>
1、配置为pom

在父级项目中的pom.xml文件使用的packaging配置一定为pom。父级的pom文件将多个子模块合并,用于聚合,无java代码,在maven install时不会生成jar/war压缩包。
在introducion模块的pom.xml中:

<packaging>pom</packaging>
2、配置为jar

Jar包是最为常见的打包方式,当pom文件中没有设置packaging参数时,默认使用jar方式打包。
这种打包方式意味着在maven build时会将这个项目中的所有java文件都进行编译形成.class文件,且按照原来的java文件层级结构放置,最终压缩为一个jar文件,生成在与src平级的target目录下。
在food模块的pom.xml中:

<packaging>jar</packaging>
3、配置为war

war包与jar包非常相似,不同的是,它会将项目中依赖的所有jar包都放在WEB-INF/lib这个文件夹下。

5、文件展示

1、 introduction的pom.xml文件展示

<?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>
    <name>introduction</name>
    <groupId>com.hm.country</groupId>
    <artifactId>introduction</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

    <modules>
        <module>population</module>
        <module>season</module>
        <module>region</module>
        <module>food</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.hm.country</groupId>
                <artifactId>population</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>com.hm.country</groupId>
                <artifactId>season</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>com.hm.country
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值