• Maven多模块项目管理小结


    题记

    最近刚完成一个用Maven构建的Web项目,看了一些Maven方面的书,比如《maven实战》,但还是对Maven多模块项目理解得不清晰,所以花了一点时间好好研究了下,现分享如下。

    问题

    下面是一个简略的项目结构图

    Parent
    `------ childA(BusinessLayer)
    `— pom.xml

    `------ childB(WebLayer)
    `— pom.xml

    `------ pom.xml

    1、Parent怎么能找到childA和childB呢?

    在maven中,parent模块组织好childA和childB,叫做"聚合",多个模块联合编译。实现起来很简单,只需要在parent的pom文件里加入以下内容。

    childA childB

    2、是不是这样写就完全ok了?

    这样只是告诉maven编译器,在读取parent的pom文件时去找到childA和childB,但还是会分别去编译他们引入的依赖。这样就会导致pom文件引入的包重复!!于是我们引入了"继承"的概念,也就是形成"父子"关系,子pom可以引用到父pom中引入的依赖。具体做法如下:

    在parent中,写入以下内容,其中"*"标识的行可以组成一个路径,通过这个路径可以在maven仓库中找到这个pom文件!本例中,path为M2_Path/com/sang/main/Parent-Moduel/1.0.2/xxxx-1.0.2.pom。所以这三个标签是必须的!!!

    4.0.0
    com.sang.main *
    Parent-Moduel *
    1.0.2 *
    pom
    Simple-main

    父pom写好了,子pom就通过标签继承父pom的依赖,如下:

    com.sang.main Parent-Moduel 1.0.2 ../pom.xml

    值得注意的是标签,如果pom的层次关系就像本例中的那样只隔一层,则可以省略这个。maven同样可以找到子pom。

    子pom中引入标签后,就会从父pom继承等属性了,例如childA只需要再加入如下内容即可!

    4.0.0
    com.sang.business
    ChildA-module
    jar
    childA

    3、如何添加依赖?

    maven可以让我们方便地管理jar包依赖,具体做法如下:

    javax.servlet servlet-api 2.5

    如果不通过继承,则需要在每个pom中加入这样的依赖,这样子pom对应的模块可以引用到这个jar包。上面提到的重复引用jar包,可以通过下面的方式解决:

    主pom中把依赖通过引起来,表示子pom可能会用到的jar包依赖

    < dependencyManagement>


    javax.servlet
    servlet-api
    2.5


    < /dependencyManagement>

    子pom如果需要引用该jar包,则直接引用即可!不需要加入,便于统一管理。此外也可以加入仅在子pom中用到的jar包,比如:

    javax.servlet servlet-api org.codehaus.jackson jackson-core-lgpl 1.9.4

    4、除了jar包依赖,插件也可以通过这样的方式进行管理

    org.apache.maven.plugins maven-source-plugin 2.1.1 org.apache.maven.plugins maven-source-plugin

    5、如果子pom间存在引用关系,比如childB引用到了childA的jar包,该怎么做?

    com.module childA 1.0.0

    小结

    本文只是从多模块组织的角度说明了maven的基本用法, 当然,其他的复杂用法还是要参考maven手册

    (全文完)

  • 相关阅读:
    数据分析技能点-概括性度量
    loop_list单向循环列表
    如何自动关闭Oracle数据库服务并重启服务器
    1206. 设计跳表
    Spring Boot 2.x系列【9】功能篇之SpringApplication启动参数使用详解
    合合TextIn - 大模型加速器
    日期调度器:dbi-tech Solutions Schedule .NET v7
    双十一买什么比较划算?四款实用性超强不吃灰的数码好物推荐
    Kali工具介绍(超详细!史上最全!)
    leetcode分类刷题:二叉树(二、简单重复逻辑的递归)
  • 原文地址:https://blog.csdn.net/emgexgb_sef/article/details/126435331