zoukankan      html  css  js  c++  java
  • 聚合和继承

    聚合 

      当有多个项目需要打包进仓库时(其实就是当前项目依赖很多项目,所以当前项目执行前,需要把这些依赖的项目全部install进本地仓库),一个一个执行install太麻烦,maven有一个方法可以多个项目一起install到本地仓库。就是聚合。

      例如:

        有A,B,C三个项目需要install,新建一个用来聚合的项目aggreation(要保证aggreation和那三个项目是同一个GroupID。这句话的意思是如果这多个项目不是同一个GroupID,就不能用聚合了?)。

     

      然后修改aggreation项目的pom文件:

      1. 打包方式由jar修改为pom:      

             <packaging>pom</packaging>
    

      2.  添加<modules> </modules>标签

      

        <modules>
             <module>../A</module>
             <module>../B</module>
             <module>../C</module>      
        </modules>                

    ps:

      这个  ../  指什么?指maven的根目录?

    应该是当前项目pom的上一级目录,其实就是所有项目存放的那个文件夹(也就是maven项目的根目录),然后就通过/A    /B    /C   代表当前项目和这三个项目的相对路径

        

      然后对aggreation项目执行install命令,则项目A,B,C就都打包到本地仓库了。

      执行aggreation项目如test,A,B,C项目也都会执行。即便ABC之间有依赖关系,如B依赖A,不用把A先执行安装,B同样会被执行。这是聚合的优势。

    配置完聚合项目,只需要操作聚合项目,里面的项目都会被操作。不管这些项目之间是否有依赖。

    继承

      

      当很多项目都有相同的依赖时,每个项目的pom都要修改,很麻烦。可以像继承那样处理,把这个依赖抽象成一个父类。

      同上面聚合一样,新建一个项目parent专门用来处理 继承。

      把共有的依赖放到这个新建项目parent的pom里的<dependencyManagement>(这部分是不在项目里运行的)里面。

    <dependencyManagement>
        <dependencies>          
            <dependency>
              共同依赖的jar的坐标
        </dependency>
        </dependencies>
    </dependencyManagement>    

      然后修改打包方式为pom:  

         <packaging>pom</packaging>

     也可以在新建项目时选择pom打包
          



     然后还需要去其他项目的pom里修改,添加<parent>标签继承上面那个专门的项目,既然每一个项目还是需要修改pom,还不如直接写依赖,何必搞这个继承。感觉没用。并没有省事,也可能是那个教程里讲的不详细

    应该说,比较简单是是如果依赖很多,每一个子项目的pom都要写很多依赖时,这时只写一个
    <parent>标签,比较简单。而且格式上更好?
    类似代码开头写常量变量那样,需要修改变量值,只在开头修改一次就可以,如果需要修改依赖,只需要去父工程里修改?
    其实就是把公用的东西提取到一块,结构更清晰,修改更方便。


    ps:
    看到另一个教程里讲,继承还有另一个用法:

    A依赖B,B依赖C,B对C的依赖是compile,则A 默认是传递依赖C。如果不想看B和C是不是compile,那只要A是继承B,就自然接受B的所有依赖关系

    
    

    注意父工程B的打包方式要是pom。(Java工程是jar,web项目是war)

    继承的写法:

        1. 建立父工程

    父工程只用来写一些依赖关系的,结构很简单,注意打包方式和,依赖的格式。

      2.  子项目

      (1)子项目的pom里添加<parent>标签,写入父工程坐标:

              

      (2)然后还要写入从当前项目pom到父工程的pom文件地址的相对路径:

              

        ..是从当前项目的pom向上一级,退到存放所有项目的文件夹,然后B是父工程的文件夹,然后是父工程的pom

      这是相对路径,这样写完,打包安装部署时,可不一定连着父工程一块打包啊?还是说,子项目编译打包后的文件,已经包含从父工程里继承过来的东西了?部署后这个相对路径已经用不到了?

      

      我记得哪里看到说项目里的路径都要写相对路径?

      (3)在子类中要声明引用父类中的那些依赖jar,因为如果父类的依赖jar太多,子类未必要全部引用。

        声明方式:

          在子类的依赖标签中写要使用父类依赖中的哪些jar的信息:

            

            使用父类依赖中的junit

          只是相对于直接写依赖,写的信息只有g,a,没有版本和范围了(也可以写)。但是如果ga两个都写了,干脆直接写成依赖不好了?还搞一个父类继承这么麻烦?只能说,最大的好处就是版本的管理了,只需要去父类里修改,统一管理依赖的版本

     

  • 相关阅读:
    CentOS6.5下安装Redis2.8.6和phpredis2.2.4扩展
    Centos系统安装 phpredis 扩展
    在centos6.3用yum安装redis
    CentOS 安装图形化界面方法
    解决Eclipse中文乱码
    apache mod_alias模块功能介绍
    php 使用serialize() 和 unserialize() 让对象成超级变量
    eclipse导入php项目
    php多文件上传类(含示例)
    PHP多图片上传类推荐
  • 原文地址:https://www.cnblogs.com/youwuyi/p/10256028.html
Copyright © 2011-2022 走看看