MAVEN的坐标和多模块的聚合

maven的坐标

Maven的坐标是用来唯一标识一个文件(例如jar包)的位置,类似于URL地址。由以下几个部分组成:

groupId:用于标识一个项目。

例如:某公司ikantalk.cn有一个crmx2项目。则可以这样命名名:cn.ikantalk.crmx2

artifactId:用于标识项目下的模块。

例如:crmx2项目下模块分为:core,common,model,web等。则artifactId分别为:core,common,model,web。

但通常artifactId只写core,common,model查找不是很方便,因为其它项目也有可能会有core,common等模块,导致不好区别。

所以一般都会以项目名做为前缀:crmx2-core,crmx2-common,crmx2-model,crmx2-web等。

这样,只看模块名,就能区别是哪个项目的哪个模块了。

version:版本号

这个不用多介绍,0.1.0,2.0.0等。

name: 模块的名字

执行mvn命令时,会显示在输出中。

packaging:打包方式

如果不指定,则默认值是jar。

根据项目性质的不同,可选择的值有:war,pom等。

打包成的文件名:crm-core-0.1.0.jar,crm-web-2.0.0.war等。

Maven的聚合

如果项目只有一个模块,谈聚合没有什么意义。

多个项目模块

crmx2下有两个项目模块,分别是comm和core。相应的pom.xml如下:

<project>
    <groupId>cn.ikantalk.crmx2</groupId>
    <artifactId>crmx2-comm</artifactId>
    <version>1.0.0</version>
    <name>CRM Comm Module</name>
    <packaging>jar</packaging>

    <dependencies>
        ......
    </dependencies>
</project>
<project>
    <groupId>cn.ikantalk.crmx2</groupId>
    <artifactId>crmx2-core</artifactId>
    <version>1.0.0</version>
    <name>CRM Comm Module</name>
    <packaging>jar</packaging>

    <dependencies>
        ......
    </dependencies>
</project>

这两个模块,每次构建时,都要在各自的目录中执行mvn命令。

两个模块还好,但是有4个,5个,甚至更多模块时,一次全部构建,也是很花时间的,而且是低效率的重复工作

如何能一次就构建多个项目,有没有更有效率的办法呢?

多项目模块的聚合

为了能一次构建两个(或多个)模块,就需要再创建一个pom.xml来对多个模块进行集中的操作,也就是聚合

新建一个用于聚合的pom.xml

<project>
    <groupId>cn.ikantalk.crmx2</groupId>
    <artifactId>crmx2-all</artifactId>
    <version>1.0.0</version>
    <name> Build All Modules</name>
    <packaging>pom</packaging>

    <modules>
        <module>....</module>
        ......
    </modules>
</project>

注意:
1. 此pom.xml的packaging元素的值为:pom。
2. 使用了元素modules和module,module的值根据目录结构的不同,会有所区别。

聚合的目录结构

聚合的目录结构可分为:父子结构和平行结构,这是由聚合pom.xml的位置的不同而决定的。

父子结构

聚合pom.xml与项目模块crmx2-core,crmx2-comm目录平级,聚合pom.xml所在的build-all目录,也包括所有项目模块目录。

|_build-all
    |_pom.xml
    |_crmx2-core
        |_pom.xml
    |_crmx2-comm
        |_pom.xml

此时,聚合pom.xml中的module定义如下:

<modules>
    <module>crmx2-core</module>
    <module>crmx2-comm</module>
</modules>
平行结构

聚合pom.xml**所在的bulid-all目录**与crmx2-core,crmx2-comm目录平级。

|_build-all
    |_pom.xml
|_crmx2-core
    |_pom.xml
|_crmx2-comm
    |_pom.xml

此时,聚合pom.xml中的module定义如下:

<modules>
    <module>../crmx2-core</module>
    <module>../crmx2-comm</module>
</modules>

注意:module的值是模块的相对路径名,所以在使用不同的目录结构时,值会不同。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值