maven项目的继承和聚合实例

聚合的意义

  对于一个大型的项目,如果我们直接作为一个工程开发,由于相互之间的依赖我们只能从头到尾由一组人开发,否则就会出现一个类好多人开发,相互更改的混乱局面,这个时候我们就将项目进行了横向和纵向的拆分。

  所谓的横向的拆分就是我们平常说的三层架构,将项目分成了web层,service层、dao层(web层也被叫做表现层,service层也被叫做业务层,dao层也被持久层),可以理解为将一个功能模块的不同调用过程进行了水平方向的拆分。

  所谓的纵向拆分就是将一个项目的多个功能模块进行了聚合,可以理解为为了完成一个系统。

  横向拆分后,每个功能模块进行了单独的开发之后,项目整合的时候就需要有一个能够整合这些项目或者模块的工程,这就是所谓聚合工程的意义。

  建立聚合工程需要注意:

  1.该聚合项目本身也做为一个Maven项目,它必须有自己的POM

  2.它的打包方式必须为: pom

  3.引入了新的元素:modules---module

  4.版本:聚合模块的版本和被聚合模块版本一致

  5.relative path:每个module的值都是一个当前POM的相对目录

  6.目录名称:为了方便的快速定位内容,模块所处的目录应当与其artifactId一致(Maven约定而不是硬性要求),总之,模块所处的目录必须和模块所处的目录相一致。

  7.聚合模块减少的内容:聚合模块的内容仅仅是一个pom.xml文件,它不包含src/main/Java、src/test/java等目录,因为它只是用来帮助其它模块构建的工具,本身并没有实质的内容。

  8.聚合模块和子模块的目录:他们可以是父子类,也可以是平行结构,当然如果使用平行结构,那么聚合模块的POM也需要做出相应的更改。

  9 如果聚合项目的子模块新建完成后进行了删除操作,一定要在聚合项目中pom.xml中的modules选项卡中将这个子模块进行删除

  
继承的意义

  继承除了能够避免重复,还有一个好处就是让项目更加安全

  继承时需要注意;

  1.说到继承肯定是一个父子结构,那么我们在聚合项目中来创建一个parent project

  2.: 作为父模块的POM,其打包类型也必须为POM

  3.结构:父模块只是为了帮助我们消除重复,所以它也不需要src/main/java、src/test/java等目录

  4.新的元素: , 它是被用在子模块中的

  5.元素的属性:: 表示父模块POM的相对路径,在构建的时候,Maven会先根据relativePath检查父POM,如果找不到,再从本地仓库查找

  6.relativePath的默认值: ../pom.xml

  7.子模块省略groupId和version: 使用了继承的子模块中可以不声明groupId和version, 子模块将隐式的继承父模块的这两个元素

 

总结

  对于聚合模块来说,它知道有哪些被聚合的模块,而对于被聚合的模块来说,它们不知道被谁聚合了,也不知道它的存在

  对于继承关系的父POM来说,它不知道自己被哪些子模块继承了,对于子POM来说,它必须知道自己的父POM是谁

  在一些最佳实践中我们会发现:一个POM既是聚合POM,又是父POM,这么做主要是为了方便。


接下来咱们就直接开始创建maven项目来实现聚合和继承;

首先先实现继承,右键new->project..->选择

maven项目的继承和聚合实例_第1张图片

点击->Next下一步;

maven项目的继承和聚合实例_第2张图片

填写完成之后点击->Finish完成,打开项目我们可以看到里面有一个pom.xml文件


pom.xml文件我这里没有做任何添加jar包操作,因为添加jar包需要下载,耗费时间,我就不做操作了,那么到此父类创建完成,接下来我们创建子类项目;

同样创建操作,和创建父类一样,但是到这里要注意:

maven项目的继承和聚合实例_第3张图片

这里编辑好了后,选择Finish完成;那么我们会看到刚刚创建的maven项目里的pom文件会有这一部分


    web-parent
    com.company
    0.0.1-SNAPSHOT
  
  com.company
  web-common
  0.0.1-SNAPSHOT
好,这样我们就继承了web-parent项目,但是注意,我没有更改任何pom文件,这里大家想要添加jar依赖什么的,可以自己自行添加,我只是演示一下继承项目的具体操作!


接下来我们继续演示聚合项目操作!

同样新建一个maven项目,上面有创建步骤!

maven项目的继承和聚合实例_第4张图片

然后点击->Finish完成;

然后在此项目上右击选择->new->project..->选择

maven项目的继承和聚合实例_第5张图片

选择maven Module 项目然后Next,创建一个web-test-pojo

maven项目的继承和聚合实例_第6张图片

然后Next下一步;

maven项目的继承和聚合实例_第7张图片

点击Finish完成;接下来同样的步骤创建几个maven项目web-test-service,web-test-pojo;

建立以war为基础的Maven项目,我们之前已经建立了三个以web-test为parent的Maven的jar的模块,但是要发布一个web项目,必须是有war包,war中才含有文件夹来存放前端的js,jsp等文件。和上面一样,在web-test上面创建module,不同的是,创建的packaging是war

这个时候,我们会发现web-test中的pom文件多了下面的内容;


  	web-test-pojo
  	web-test-mapper
  	web-test-service
  	web-test-web
  

此时我们的web项目已经聚合起来了,要发布项目也是可以的,以web-test为单位, 在web-test中pom的文件加入以下内容,将tomcat的插件配置到web-test中去





org.apache.tomcat.maven
tomcat7-maven-plugin

8080
/



另外在,web-parent和web-common安装到本地的仓库中去
在web-parent项目上面右键,然后run as

maven项目的继承和聚合实例_第8张图片


然后Run,web-common同理;

执行后,在web-test这个主项目中run下面的代码  clean tomcat7:run

maven项目的继承和聚合实例_第9张图片

那么好,maven的聚合和继承简单的操作到此结束。

你可能感兴趣的:(maven聚合和继承)