zoukankan      html  css  js  c++  java
  • Maven 之多模块构建

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

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

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

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

    1. packaging

    packaging给出了项目的打包类型,即作为项目的发布形式,其可能的类型。在Maven 3中,其可用的打包类型如下:

    jar,默认类型
    war
    ejb
    ear
    rar
    par
    pom
    maven-plugin
    2.multi-modules

    Maven 3支持Maven项目的多模块(multi-modules)结构。这样的Maven项目也被称为聚合项目,通常由一个父模块和若干个子模块构成。

    其中,父模块必须以pom打包类型,同时以<modules>给出所有的子模块。父模块的POM示例如下:

    ...
    <packaging>pom</packaging>
    
    <modules>
    <module>my-frontend-project</module>
    <module>my-service-project</module>
    <module>my-backend-project</module>
    </modules>
    ...


    其中的每个module,都是另外一个Maven项目

     一个项目可能会有多个子module,在特定情况下可能只需要build其中几个module。

    例如我的项目的目录结构如下

    myproject

    |------------module_one

    |------------module_two

    |------------module_three

    |------------module_four

    |------------module_five

    |------------module_six

    |------------module_seven

    |------------pom.xml

    解决方法一:

    例:我想要build module_three,module_five,module_seven三个子module

    在根pom同一级目录运行如下命令:

    mvn clean install -pl module_three,module_five,module_seven

    也可以在此命令上加上以下参数

    -am 不仅build module_three,module_five,module_seven这三个,而且build这些子module require的其他项目,require是指其parent项目。

    -amd 不仅build module_three,module_five,module_seven这三个,而且build依赖这三个module的项目,如module_other。

    解决方法二:

    增加一个profile,如:

    复制代码
    <profiles>      
      <profile>
                <id>patch_001</id>
                <properties>
                    
                </properties>
                <modules>
                    <module>module_three</module>
                    <module>module_five</module>
                    <module>module_seven</module>
                </modules>
            </profile>
    </profiles>
    复制代码

    然后运行maven命令:

    mvn clean install -Ppatch_001  #这样也可以只build这三个子module

    PS:我采用第二种方法的时候,发现在profile这样定义了所要build的module后,

  • 相关阅读:
    SharePoint Framework (SPFx) 开发入门教程
    SharePoint 2013 Designer 入门教程
    SharePoint 2013 开发教程
    SharePoint 2013 入门教程
    SharePoint Online 部署SPFx Web部件
    SharePoint Online SPFx Web部件绑定数据
    SharePoint Online 创建SPFx客户端Web部件
    SharePoint Online 配置框架(SPFx)开发环境
    SharePoint Online 创建应用程序目录
    SharePoint Online 启用 IRM
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/10062019.html
Copyright © 2011-2022 走看看