• Maven聚合模式


    项目的打包类型:pom、jar、war

    项目中一般使用maven进行模块管理,每个模块下对应都有一个pom文件,pom文件中维护了各模块之间的依赖和继承关系。项目模块化可以将通用的部分抽离出来,方便重用;修改一部分代码不再是build整个项目,缩短了build时间;此外各模块都有自己的pom文件,结构更清晰。

    使用maven进行模块划分管理,一般都会有一个父级项目,pom文件除了GAV(groupId, artifactId, version)是必须要配置的,另一个重要的属性就是packing打包类型,所有的父级项目的packing都为pom,packing默认是jar类型,如果不作配置,maven会将该项目打成jar包。作为父级项目,还有一个重要的属性,那就是modules,通过modules标签将项目的所有子项目引用进来,在build父级项目时,会根据子模块的相互依赖关系整理一个build顺序,然后依次build。

    而对于各个子项目,需要在其对应的pom文件开头申明对父级项目的引用,通过GAV实现。对于子项目自己的GAV配置,GV如果不配置,则会从父级项目的配置继承过来。子模块可通过dependencies标签来添加自己的依赖,此外子类项目的packing值只能是war或者jar,前面已经说过,packing默认是jar类型。如果是需要部署的项目,则需要打包成war类型,如果只是内部调用或者是作服务使用,则推荐打包成jar类型。

    --》

    所以回顾我们现在的 xx项目 ,结合当中的pom.xml来看的话,

           <groupId>com.pccw</groupId>

           <artifactId>qdf-rest-master</artifactId>

           <version>0.0.1-SNAPSHOT</version>

           <packaging>pom</packaging>

    父pom这样指定是必须的 ,packing必须为pom ;

    <dependencyManagement>

                  <dependencies>

                         <dependency>

                                <groupId>com.pccw</groupId>

                                <artifactId>qdf-rest-data</artifactId>

                                <version>${project.version}</version>

                         </dependency>

     

                         <!-- <dependency>

                                <groupId>com.pccw</groupId>

                                <artifactId>qdf-rest-example</artifactId>

                                <version>${project.version}</version>

                         </dependency> -->

     

                         <dependency>

                                <groupId>com.pccw</groupId>

                                <artifactId>qdf-rest-queue</artifactId>

                                <version>${project.version}</version>

                         </dependency>

     

                         <dependency>

                                <groupId>com.pccw</groupId>

                                <artifactId>qdfmvc</artifactId>

                                <version>${project.version}</version>

                         </dependency>

     

                         <dependency>

                                <groupId>com.pccw</groupId>

                                <artifactId>qdf-rest-util</artifactId>

                                <version>${project.version}</version>

                         </dependency>

    而且下方必须制定聚合 :

           <modules>

                  <module>qdf-rest-data</module>

                  <!--<module>qdf-rest-example</module>-->

                  <module>qdf-rest-util</module>

                  <module>qdf-rest-schedule</module>

                  <module>qdf-rest-queue</module>

                  <module>qdfmvc</module>

            <module>qdf-rest-report</module>

                  <module>qdf-rest-image</module>

                  <module>qdf-rest-job</module>

           </modules>

    再通过这种形式把 子工程都依赖进来,然后看子工程怎样的导包形式,默认的是最上面说的子工程jar包形式依赖;然后子工程把父工程这个依赖进去 :

           <parent>

                  <groupId>com.pccw</groupId>

                  <artifactId>qdf-rest-master</artifactId>

                  <version>0.0.1-SNAPSHOT</version>

           </parent>

       --》 这样确保 子工程可以引用父工程的依赖

    然后子工程还可以           <dependency>

                         <groupId>com.pccw</groupId>

                         <artifactId>qdf-rest-util</artifactId>

                  </dependency>

    导入其他子工程 的jar包 ;

    参照2里面说的 :

    子工程通过再次定义可以使用 父工程的 ,并且不写version来达到跟父工程保持保本一致

    子工程引入子工程也是通过依赖的方式进行,并且把子工程依赖的jar包也都引入了。

  • 相关阅读:
    api
    git分支合并
    Zookeeper 入门,看这篇就够了
    SQL分组查询
    [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:lovemu' did not find a matching property.
    事务 事务隔离级别
    DDL DML DCL的理解
    局域网和广域网
    三种数据交换方式
    通信子网和资源子网
  • 原文地址:https://www.cnblogs.com/gougouyangzi/p/9223151.html
Copyright © 2020-2023  润新知