MAVEN的坐标和多模块的聚合
来源:互联网 发布:怎么提升淘宝等级 编辑:程序博客网 时间:2024/06/06 07:19
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的值是模块的相对路径名,所以在使用不同的目录结构时,值会不同。
- MAVEN的坐标和多模块的聚合
- Maven 的聚合(多模块)和 Parent 继承
- maven-Maven的聚合模块和pom的继承使用
- Maven聚合模块与继承和Maven的生命周期
- Maven聚合模块与继承和Maven的生命周期配置
- maven的聚合模块和pom继承使用(六)
- maven的聚合模块和pom继承使用
- maven的聚合模块和pom继承使用(六)
- maven的聚合模块和pom继承使用
- Eclipse下Maven工程多模块继承和聚合的创建
- Maven的pom.xml文件结构之基本配置packaging和多模块聚合结构
- Maven的pom.xml文件结构之基本配置packaging和多模块聚合结构
- Maven 的继承和聚合
- Maven的聚合和依赖
- maven的继承和聚合
- Maven的聚合和继承
- Maven的聚合和继承
- Maven的聚合和继承
- 约瑟夫环问题
- 取消 myeclipse 对js,html文件的验证
- java虚拟机之内存结构
- 06. 红黑树(R-B Tree)
- hadoop源码解析之hdfs写数据全流程分析---datanode处理
- MAVEN的坐标和多模块的聚合
- mysql 按时间查询的
- VxWorks消息队列
- 01. 散列表
- iOS Swift多线程、互斥锁的实现方式
- 面向对象的三个基本特征
- 线程的两种方法
- ubuntu apt软件包管理工具
- 02. 优先队列-二叉堆(Binary Heap)