• Maven构建多模块项目


    创建多模块项目

    本文使用命令行进行演示,当然使用 Idea 也是可以的。

    • 1.创建父级项目
    • 2.创建子模块
    • 3.项目打包
    • 4.父级项目管理依赖
    • 5.更新子模块并构建

    1. 创建父级项目

    > mvn archetype:generate -DgroupId=com.rootmodule -DartifactId=parent-project
    
    • 1

    成功创建父级项目后,打开父级目录中的pom.xml文件并将打包配置添加为pom:

    <packaging>pompackaging>
    
    • 1

    2. 创建子模块

    > cd parent-project
    > mvn archetype:generate -DgroupId=com.rootmodule -DartifactId=module-1
    > mvn archetype:generate -DgroupId=com.rootmodule -DartifactId=module-2
    > mvn archetype:generate -DgroupId=com.rootmodule -DartifactId=module-3
    
    • 1
    • 2
    • 3
    • 4

    执行后

    • 1)将会自动在 parent-project 的 pom.xml 中,在 modules 标签部分中添加所有子模块:
    <modules>
        <module>module-1module>
        <module>module-2module>
        <module>module-3module>
    modules>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 2)将会自动在三个 子模块 的 pom.xml 中,在 parent 标签部分中添加父级模块:
    <parent>
      <artifactId>parent-projectartifactId>
      <groupId>com.rootmodulegroupId>
      <version>1.0-SNAPSHOTversion>
    parent>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3. 项目打包

    在父项目根目录下,执行:

    > mvn package
    ···
    
    构建完成后,将产生三个单独的jar包。
    ```bash
    
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Build Order:
    [INFO] parent-project                                                     [pom]
    [INFO] module-1                                                               [jar]
    [INFO] module-2                                                            [jar]
    [INFO] module-3                                                             [war]
    ...
    [INFO] Reactor Summary for parent-project 1.0-SNAPSHOT:
    [INFO] parent-project ..................................... SUCCESS [  0.272 s]
    [INFO] module-1 ............................................... SUCCESS [  2.043 s]
    [INFO] module-2 ............................................ SUCCESS [  0.627 s]
    [INFO] module-3 ............................................. SUCCESS [  0.572 s]
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    4. 父级项目管理依赖

    在父级项目的pom.xml中设置依赖版本配置

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframeworkgroupId>
                <artifactId>spring-coreartifactId>
                <version>5.3.16version>
            dependency>
            //...
        dependencies>
    dependencyManagement>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在子模块的pom.xml中,只需要依赖此模块,而无需设置依赖包版本号

    <dependencies>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-coreartifactId>
        dependency>
        //...
    dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    当然父级项目 pom.xml 还有许多配置项供你使用,以便于进行一个以来包的版本统一管理

    5.更新子模块并构建

    现在我们开发的多半是web应用,那么你可以这样设置子模块的pom.xml,指定其打包方式:

    <packaging>warpackaging>
    
    • 1

    并在子模块的pom.xml中插件列表标签中添加 maven-war-plugin

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-war-pluginartifactId>
                <version>3.3.2version>
                <configuration>
                   <failOnMissingWebXml>falsefailOnMissingWebXml>
                configuration>
            plugin>
        plugins>
    build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    依然是在父项目根目录下,执行打包指令:

    mvn clean install
    
    • 1

    构建完成后,将生成2个jar包和1个war包

    
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Build Order:
    [INFO] 
    [INFO] parent-project                                                     [pom]
    [INFO] module-1                                                               [jar]
    [INFO] module-2                                                            [jar]
    [INFO] module-3                                                             [war]
    //............. 
    [INFO] Reactor Summary for parent-project 1.0-SNAPSHOT:
    [INFO] 
    [INFO] parent-project ..................................... SUCCESS [  0.272 s]
    [INFO] module-1 ............................................... SUCCESS [  2.043 s]
    [INFO] module-2 ............................................ SUCCESS [  0.627 s]
    [INFO] module-3 ............................................. SUCCESS [  1.047 s]
    ————————————————
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在这里插入图片描述


    ------ 如果文章对你有用,感谢右上角 >>>点赞 | 收藏 <<<

  • 相关阅读:
    我摊牌了!真正的灰度队列实现方案!全网你都搜不到!
    体验静态代码块
    js函数柯里化-面试手写版
    [附源码]计算机毕业设计JAVA大学生心理健康评估系统
    微服务项目:尚融宝(42)(核心业务流程:借款额度审批(2))
    帧结构的串行数据接收器——Verilog实现
    金仓数据库 KingbaseES PL/SQL 过程语言参考手册(12. 异常处理)
    Vue封装组件并发布到npm仓库
    Keepalived 高可用(附带配置实例,联动Nginx和LVS)
    Spring-IOC容器底层原理
  • 原文地址:https://blog.csdn.net/win7583362/article/details/125910948