理论基础
工程和模块的区别:
工程不等于完整的项目,模块也不等于完整的项目,一个完整的项目看的是代码,代码完整,就可以说这是一个完整的项目和此项目是工程和模块没有关系。
工程天生只能使用自己内部资源,工程天生是独立的。后天可以和其他工程或模块建立关联关系。
模块天生不是独立的,模块天生是属于父工程的,模块一旦创建,所有父工程的资源都可以使用。
父子工程直接,子模块天生集成父工程,可以使用父工程所有资源。
子模块之间天生是没有任何关系的。
父子工程直接不用建立关系,继承关系是先天的,不需要手动建立。
平级直接的引用叫依赖,依赖不是先天的,依赖是需要后天建立的。
案例实现
(父模块有骨架——>archetypes是maven.*.webapp,子模块无骨架)
-
maven02_prent 父模块
——>设置为本地仓库—>定义pom.xml
抽取重复配置,如锁定jar包的版本和设置编译版本等。
—>将父工程发布到仓库
install:install -
maven_dao子模块
——>定义pom.xml
只添加dao层的pom、mybatis和spring整合的相关依赖
——>dao层代码编写
——>配置文件applicationContext-dao.xml
配置只与dao相关
——>把dao模块发布到仓库 -
maven_service子模块
——>定义pom.xml
service层的pom.xml需要继承父模块、依赖dao模块、添加spring相关的依赖
——>service层代码编写
——>配置文件applicationContext-service.xml
配置只与service相关
——>把service模块发布到仓库 -
maven_web子模块(有骨架maven.*.webapp)
——>定义pom.xml
web层的pom.xml需要继承父模块、依赖service模块、添加springmvc相关的依赖
——>controller层代码编写
——>配置文件applicationContext.xml、log4j.properties、springmvc.xml -
运行调试
1.—在ssm_web工程的pom.xml中配置tomcat插件运行
运行ssm_web工程它会从本地仓库下载依赖的jar包,所以当ssm_web依赖的jar包内容修改了必须及时发布到本地仓库,比如:ssm_web依赖的ssm_service修改了,需要及时将sm_service发布到本地仓库。
2.—在父工程的pom.xml中配置tomcat插件运行,自动聚合并执行
推荐方法2,如果子工程都在本地,采用方法2则不需要子工程修改就立即发布到本地仓库,父工程会自动聚合并使用最新代码执行。
3.本地tomcat运行。
注意:如果子工程和父工程中都配置了tomcat插件,运行的端口和路径以子工程为准。
分模块构建工程-依赖整合
每个模块都需要spring或者junit的jar,况且最终package打完包最后生成的项目中的jar就是各个模块依赖的整合,所以我们可以把项目中所需的依赖都可以放到父工程中,模块中只留模块和模块之间的依赖,那父工程的pom.xml可以如下配置:
代码见项目!