Maven学习6 - 拆分与聚合
文章目录
02.Maven高级-拆分与聚合
这里有一个例子:
订单操作,买家需要看到订单,并且卖家也可以看到订单。这两个操作都是由持久层完成的,所以,如果持久层可以复用,将大大减少工程量。这里,maven就可以帮我们做到。
该工程的实例代码:示例代码
1. Maven工程的拆分和聚合
1.1 什么是工程的拆分
maven解决代码可重用和便于维护的问题上是这样解决的:
maven把一个完整的项目,分成不同的独立模块,这些模块都有各自独立的坐标,哪一个地方需要用到其中的某块,直接引用坐标即可。
今后,如果公司开发一个新项目,我们首先考虑问题不是持久层、业务层、工具类、实体类等如何编写,而是考虑这些模块是否存在。如果存在直接引用。
1.2 什么是工程的聚合
我们可以把拆分零散的模块聚合到一起编写一个完整的项目,这就是maven聚合思想。
项目都是分模块开发的,每个模块开发完成运行整个工程需要将模块聚合在一起运行
1.3 什么是继承
继承是为了消除重复,如果将持久层、业务层、视图层分开创建独立的工程则每个工程的pom文件中的内容存在重复,比如:设置编译版本,锁定版本等。可以将这些重复的配置提取出来在父工程的pom.xml中定义。
2. 如何进行工程的拆分
2.1 工程和模块的区别:
工程不等于完整的项目,模块也不等于完整的项目,一个完整的项目看的是代码,代码完整,就可以说这是一个完整的项目,和此项目是工程还是模块没有关系。
工程天生只能使用自己内部资源,工程天生是独立。后天可以和其他工程或者模块建立关联关系。
模块天生不是独立的,模块天生是属于父工程的。模块一旦创建,所有父工程的资源都可以使用。
2.2 父工程和子模块,模块和模块之间的关系
父子工程之间,子模块天生继承父工程,可以使用父工程的所有资源。
子模块之间天生是没有任何关系的。
父子工程之间不用建立关系,继承关系是先天的,不需要手动加建立。
平级之间的引用叫依赖,依赖不是先天的。一来是需要后天建立的。
2.3 如何进行工程的拆分
1. 进行工程的拆分
-
首先创建一个工程,因为该工程是父工程,所以这个工程之间创建成一个普通的java Maven工程即可。
-
然后,右击父工程,选择module。
-
然后根据子模块的性质,选择合适的模块即可。如果是web类型的,那么就创建一个webapp类型的模块;如果是普通的java模块,就不使用框架即可。
-
建立完成之后,结构图如下:
这里面的每一个子模块都有一个pom文件,如果想要之间相互引用,需要在pom文件中进行配置:
而子模块天生继承了父工程的所有依赖,所以可以直接使用父工程中的东西。
-
如果需要使用其他工程的资源。需要将其他的工程打成jar包,放入本地仓库,再在pom文件中进行引用。
3. 关于web项目的启动
如果是web项目,那么一共有三种启动方式。
第一种:通过配置maven中内置的tomcat7插件,来启动webapp,这时,要选择父工程的tomcat7插件启动。
第二种:通过配置maven中内置的tomcat7插件,来启动webapp,这时,选择web模块启动,此时需注意,web项目的打包方式必须是war。这里需要注意的是,如果该web模块依赖于其他的模块,必须将其他模块打包安装在本地仓库,才能正常的运行web模块。
第三种:配置本地的tomcat服务器,加入web模块的artifact即可。