使用java技术开发项目的时候,随着项目的不断发展,需求的不断更新,代码越来越多,包结构也越来越复杂,就会遇到很多问题:
将一个复杂项目拆分成多个模块是解决上述问题的一个重要方法,多模块的划分可以降低代码之间的耦合性(从类级别的耦合提升到jar包级别的耦合),每个模块都可以是自解释的(通过模块名或者模块文档),模块还规范了代码边界的划分,开发者很容易通过模块确定自己所负责的内容。
为了保持模块间依赖统一,在父模块中使用dependencyManagement预定义所有模块需要用到的dependency(依赖),然后,子model根据实际需要引入parent中预定义的依赖
好处:
1、依赖统一管理(parent中定义,需要变动dependency版本,只要修改一处即可);
2、代码简洁(子model只需要指定groupId、artifactId即可)
3、dependencyManagement只会影响现有依赖的配置,但不会引入依赖,即子model不会继承parent中dependencyManagement所有预定义的depandency,只引入需要的依赖即可,简单说就是“按需引入依赖”或者“按需继承”;因此,在parent中严禁直接使用depandencys预定义依赖,坏处是子model会自动继承depandencys中所有预定义依赖;
packaging默认类型jar类型,如果不做配置,maven会将该项目打成jar包。常见项目的打包类型:pom、jar、war:
pom ---------> 父类型都为pom类型
jar ---------> 内部调用或者是作服务使用
war ---------> 需要部署的项目(一般web相关)
小结:父级项目里packaging打包方式一般配置成pom,pom 表示项目里没有java代码,也不执行任何代码,只是为了聚合工程或传递依赖用的。
管理子项目
在SpringBoot项目的pom.xml文件中,元素用于定义项目的构建配置,主要包括插件和资源过滤等配置。出现在pom.xml的顶层元素中,是一个重要的构建配置区。
org.springframework.boot spring-boot-maven-plugin true src/main/resources
SpringBoot项目通常需要的配置有:
最后生成的文件中只有pom.xml .idea .iml文件没有src目录,自行删除
选择maven构建
父项目中
4.0.0 com.dmk boot-parent 0.0.1-SNAPSHOT boot-parent pom boot-parent org.springframework.boot spring-boot-starter-parent 2.7.13 1.8 boot-web boot-api boot-commons boot-dao boot-service com.dmk boot-web 0.0.1-SNAPSHOT com.dmk boot-api 0.0.1-SNAPSHOT com.dmk boot-service 0.0.1-SNAPSHOT com.dmk boot-dao 0.0.1-SNAPSHOT com.dmk boot-commons 0.0.1-SNAPSHOT
子项目中(service)
4.0.0 com.dmk boot-service 0.0.1-SNAPSHOT boot-service boot-service com.dmk boot-parent 0.0.1-SNAPSHOT 1.8 com.dmk boot-dao
建议将启动类只保留web模块中
只在web模块中的application.yml中添加配置信息