• Maven进阶


    1.Maven管理多模块应用

    1.1)场景描述

            commonModel:提供公共的基础服务,比如工具类,常量类等等

            bussinessModel:业务模块,是系统真正要实现的业务,依赖于common模块,比如订单管理,财务统计,会员管理等

            application:可发布的web应用,由各个bussinessModel组成,最终满足项目整体需求

            第三方模块:包括各类框架,Spring,Mybatis,日志等.整个应用都是依赖它们完成开发的

    Maven管理多模块应用的实现是互联网项目中多使用分布式开始,那么每个独立的服务都会使用独立的项目进行维护,那么这样就需要使用多模块应用管理,来实现项目的高度统一.

    第一种实现方式

    首先new一个空项目

     

     

    这样一个空的新项目就建好了.

    那么首先我们要有一个父工程 至少是个maven工程

     

     

    创建子模块  java maven工程

     

     

     

    创建子模块  java maven web工程

     

     

     

     假设现在maven-java也想当父工程

     

     

     

    假设各模块间各自需要引入各自的依赖,各自间同一个依赖版本不同

    当父类引入这些依赖后,即使子类没有引入,也都有了这些依赖,这样版本也可以统一

     

    父工程管理依赖,现在这样出现一个问题

     

    在父工程用<dependencyManagement>  加强对所有依赖的管理

     
    

     

     

    这样就需要子工程声明式继承父依赖,不能无条件继承

    比如说子工程maven-java需要一个mysql依赖

     比如子工程maven-web需要junit

     并且都不需要写版本号,这叫做声明式依赖,版本继承自父工程的版本号,这样就各取所需,并且,父工程版本号改变会影响子工程

    但是如果子模块里指定依赖的版本号,那么就不会继承自父类

     

    父工程管理依赖的版本号

     

     这样如果哪个jar包需要升级,直接上面改版本号就行了

    这样以第一种方式进行多模块管理就基本完了

    创建子工程的时候,java或者web模式都可以,只要是maven工程就行了

    第二种方式

    先new个父工程

     

     

     

     要想成为一个Maven父工程,必须满足两要求

    1.packaging标签的文本内容必须设置为pom

    2.删除SRC目录

     创建子模块

     

    先建个maven  java 子模块

     

     

     

     

    创建maven web子模块

     

     

     

     

    比如说现在maven-java-02也想当父工程

    还是一样

    1.packaging标签文本内容为pom

    2.删除src目录

     

     

     

     

     

    还是回到依赖上面

    父工程加依赖,子孙后代就都有了  无条件继承

     那么还是老办法加依赖.子类需要什么声明问父工程拿,父工程控制版本

     子类需要什么就用声明式问父工程,或爷爷工程拿  如果自己想要个不同与其他的版本的,自己加

     版本控制和第一种方式一样

    注意一点

     

    如何在pom.xml文件指定编译插件的版本 

    只需要在父类工程添加

     

    第三种是第一种和第二种的混合使用

  • 相关阅读:
    Nuxt.js
    干货分享 | MindSpore21天实战营手记(四):基于YOLOV3-DarkNet50的篮球检测模型
    使用GIt小组分工完成积分商城系统-SSM
    java计算机毕业设计家庭安防系统源码+mysql数据库+系统+lw文档+部署
    【Chips】如何用DPI调用C++程序,并成功仿真
    css3动画+svg实现水球进度条
    java集合题库详解
    【问题思考总结】如何求椭圆的切线?【过椭圆外一点】
    【784. 字母大小写全排列】
    视频营销终极指南,独立站卖家必看
  • 原文地址:https://blog.csdn.net/tiantiantbtb/article/details/127843635