1.工程的拆分
面对当今互联网+的行业,软件项目十分变得越来越庞大,复杂程度越来越高,工程拆分提高了开发与管理的成本,工程拆分可以实现分模块开发与测试,可实现多线程开发与管理,提高工程代码的复用度,同时也提高了软件的开发速度和效率。
2.工程的聚合
我们把项目拆分成多个子模块后,独立运行各个模块是无法完成软件项目要求的,,只有把他们整合起来,分工合作才能完成工作,因此需要父工程来管理各个子模块,把他们聚合在一起运行,各个子模块可以打成一个独立的可运行的war包。
3.子模块继承父模块的理解
类似Java类的继承,都是为了消除重复,子类继承父类,父类里面的属性与方法在子类中就不需要在定义与实现了,使用的时候直接调用父类就可以,我们把crm拆分后,有一个父工程,子工程要用到的依赖都可以在父工程pom.xml中定义好,将来子工程在开发的时候就不用在引用jar包的坐标了。
4.依赖传递的两个原则
-
第一声明者优先原则
在pom.xml谁先声明,就用谁,坐标代码的顺序越靠前,就用谁。 -
路径最短优先原则
直接引入肯定比依赖的引入路径短。
5.版本锁定
在父工程的pom.xml中定义,子工程就不需要再定义了。
<dependencyManagement>
<dependencys>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
</dependency>
</dependencys>
</dependencyManagement>
6.定义版本常量
在使用坐标时,对于同一个框架,引入多次时,它的版本信息就会多次出现,所以可以借用常量的思想,将这些版本号提取出来,在需要用到的时候,直接写版本的常量名称就可以了。
<!--定义版本常量 -->
<properties>
<spring.version>4.2.8.RELEASE</spring.version>
<struts.version>2.3.24</struts.version>
<hibernate.version>5.0.9.Final</hibernate.version>
</properties>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts.version}</version>
</dependency>
7.版本锁定
- 依赖的继承:
在Maven中,子项目是可以继承父项目中的依赖的,比如说我们有一个父项目maven-parent,该父项目拥有一个子项目A,如果在父项目中依赖了junit,那么在子项目A中即便是没有引入junit,在子项目中仍然能够使用junit,因为子项目天然继承了父项目中的junit依赖。 - 首先在父工程的pom.xml中
<!-- 版本锁定:要写在dependencies之后 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
</dependency>
</dependencies>
</dependencyManagement>
- 版本不代表已经添加了依赖,此时需要继续添加依赖
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
- 子工程如果想要继承junit,也必须添加依赖,不需要版本信息。