Maven父子工程创建、与普通工程区别

 

Maven父子工程创建、与普通工程区别

普通项目与 maven项目的区别:

如果有多个项目都是传统的SSM框架整合的项目,那么需要在每个项目中都放置一套 SSM 框架的 jar 包。

如果是 Maven管理的SSM工程,如果有多个项目,那么只需要一套 SSM 框架的jar包,实际项目中只用放置 jar 包的坐标即可。

 

Maven工程拆分:Maven解决代码可重用和便于维护问题

Maven可以把一个完整的项目,分成不同的独立模块,这些模块都有各自独立的坐标,哪个地方需要其中某个模块,就直接引用该模块坐标即可(维护一份代码即可)。如果公司开发一个新的项目,首先我们考虑的不是 dao 、service、utils、domain如何编写,而是考虑 dao、service、utils、domain这些模块是否已经存在,如果存在就直接引用。

Maven工程聚合:

我们可以把拆分零散的模块聚合在一起编写一个完整的项目,这就是maven聚合。


Maven父子工程创建

父工程创建:父工程的主要用途是 管理 jar 包的坐标。

Maven父子工程创建、与普通工程区别

Maven父子工程创建、与普通工程区别

Maven父子工程创建、与普通工程区别

Maven父子工程创建、与普通工程区别

父工程只需要 pom.xml 文件,可以删除 src 目录

Maven父子工程创建、与普通工程区别

Maven父子工程创建、与普通工程区别

创建子工程(模块):

创建 dao 子模块,右键父工程,选择 New  > Module

Maven父子工程创建、与普通工程区别

dao模块不需要与页面进行交互,即是普通 java 工程就可以,所以不需要使用骨架创建(不勾选 Create from archetype)

Maven父子工程创建、与普通工程区别

Maven父子工程创建、与普通工程区别

Maven父子工程创建、与普通工程区别

Maven父子工程创建、与普通工程区别

创建 service 子模块,右键父工程,选择 New  > Module

Maven父子工程创建、与普通工程区别

service 模块不需要与页面进行交互,即是普通 java 工程就可以,所以不需要使用骨架创建(不勾选 Create from archetype)

Maven父子工程创建、与普通工程区别

Maven父子工程创建、与普通工程区别

Maven父子工程创建、与普通工程区别

Maven父子工程创建、与普通工程区别

创建 web子模块,右键父工程,选择 New  > Module

Maven父子工程创建、与普通工程区别

web 模块需要与页面进行交互,所以需要使用骨架创建(勾选 Create from archetype),选择 maven-archetype-webapp

Maven父子工程创建、与普通工程区别

Maven父子工程创建、与普通工程区别

Maven父子工程创建、与普通工程区别

Maven父子工程创建、与普通工程区别

Maven父子工程创建、与普通工程区别

Maven父子工程创建、与普通工程区别

到此 maven 父子工程创建完成,当然实际项目中会有许多细分的子模块需要创建。


工程与模块的区别、联系

区别

工程不等于完整的项目,模块也不等于完整的项目。一个完整的项目看的是代码,如果代码完整就可以说这是一个完整的项目,和此项目是工程和模块没有关系。

工程天生只能使用自己内部的资源,工程天生是独立的。后天可以和其他工程或模块建立关联关系。

模块天生不是独立的,模块天生是属于父工程的,模块一旦创建,所有父工程的资源都可以使用。

联系

父子工程之间,子模块天生继承父工程,可以使用父工程所有资源。

子模块之间天生是没有任何关系的。

父子工程直接不用建立关系,继承关系是先天的,不需要手动建立。

平级直接的引用叫做依赖,依赖不是先天的,依赖是需要后天建立的。