zoukankan      html  css  js  c++  java
  • 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包也都引入了。

  • 相关阅读:
    Selenium-Xpath使用方法
    HTML基础之js
    HTML基础—DOM操作
    CSS基础知识总结二
    CSS基础知识总结之css样式引用的三种方式
    BZOJ 2329/2209 [HNOI2011]括号修复 (splay)
    BZOJ 1576 [USACO]安全路经Travel (树剖+线段树)
    BZOJ 2402 陶陶的难题II (01分数规划+树剖+线段树+凸包+二分)
    BZOJ 4044 Virus synthesis (回文自动机+dp)
    BZOJ 2342 [SHOI2011]双倍回文 (回文自动机)
  • 原文地址:https://www.cnblogs.com/gougouyangzi/p/9223151.html
Copyright © 2011-2022 走看看