学校建设网站的背景,机关门户网站 建设 方案,网站配色,智慧团建信息系统网站一、创建流程
1、首先创建springboot项目作为父项目
只留下pom.xml 文件#xff0c;删除src目录及其他无用文件 2、创建子项目
子项目可以是maven项目#xff0c;也可以是springboot项目 3、父子项目关联 4、父项目中依赖管理
?xml version1.0 encoding…一、创建流程
1、首先创建springboot项目作为父项目
只留下pom.xml 文件删除src目录及其他无用文件 2、创建子项目
子项目可以是maven项目也可以是springboot项目 3、父子项目关联 4、父项目中依赖管理
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersion
!-- 继承的springboot版本--parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.6.3/versionrelativePath/ !-- lookup parent from repository --/parent!-- 引入子模块 --modulesmodulesystem/modulemodulegateway/modulemodulecommon/module/modulesgroupIdcom.matter/groupIdartifactIdrecord/artifactIdversion0.0.1-SNAPSHOT/versionnamesyh_matter_record_server/namedescriptionsyh_matter_record_server/descriptionpackagingpom/packaging!-- 作用公共依赖引入使用场景基本所有子模块都用到的依赖--dependenciesdependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency!-- jdbc依赖包 --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependency/dependencies!-- 版本管理 --propertiesjava.version1.8/java.versionspring.cloud.version2021.0.1/spring.cloud.versionspring.cloud.alibaba.version2021.0.1.0/spring.cloud.alibaba.versionmybatis.plus.version3.4.3.4/mybatis.plus.versionfastjson2.version2.0.9/fastjson2.versionpagehelper.version1.4.3/pagehelper.version/properties!-- 作用依赖版本生命不做依赖引入。使用dependencyManagement统一管理项目的版本号确保应用的各个项目的依赖和版本一致不用每个模块项目都弄一个版本号不利于管理。 --dependencyManagementdependencies!-- spring-loud --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${spring.cloud.version}/versiontypepom/typescopeimport/scope/dependency!-- 阿里微服务 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${spring.cloud.alibaba.version}/versiontypepom/typescopeimport/scope/dependency!-- mybatis-plus --dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion${mybatis.plus.version}/version/dependency!-- 阿里json解析 --dependencygroupIdcom.alibaba.fastjson2/groupIdartifactIdfastjson2/artifactIdversion${fastjson2.version}/version/dependency!-- 分页插件--dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion${pagehelper.version}/version/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/projectdepedencyManagement标签介绍
在maven的聚合工程中父模块的pom文件中使用dependencyManagement统一管理项目的版本号确保应用的各个项目的依赖和版本一致不用每个模块项目都弄一个版本号不利于管理。
dependencyManagement里只是声明依赖并不自动实现引入需要子项目声明需要用的依赖。
如果不在子项目中声明依赖是不会从父项目中继承下来的如果在子项目中写了该依赖项但是没有指定具体版本这时候才会从父项目中继承相应依赖以及相应的version和scope;如果在子项目中写了该依赖项并且项目中指定了版本号那么会使用子项目中指定的版本不再使用父项目指定的依赖版本号。
父项目使用depedencyManagement声明依赖子工程引入依赖不需要声明版本 5、公共模块使用
第一步创建公共模块 common
第二步父子关联
第三步其他模块使用公共模块 common
dependencies标签引入公共模块 common然后就可以调用方法了 二、遇到的问题以及解决方法
1、公共模块被其他模块引入后使用使用正常打包报错 程序包 com.xxx.common.utils不存在或者xxx找不到符号
原因SpringBoot工程打包编译时会生成两种jar包一种是普通的jar另一种是可执行jar。默认情况下这两种jar的名称相同在不做配置的情况下普通的jar先生成可执行jar后生成造成可执行jar会覆盖普通的jar。而service工程无法依赖common-utils工程的可执行jar所以编译失败程序包不存在。 解决在common-utils工程中pom.xml文件中加入配置即可
buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationclassifierexec/classifier/configuration/plugin/plugins/build2、Maven多模块项目无法加载其他模块公共模块下的Bean
比如公共模块中有redis序列化配置以及redis工具类需要需要注入 在需要使用的模块中的启动类添加 ComponentScan注解
// 值为一个数组表示扫描的路径递归扫描到最后
ComponentScan(basePackages {com.example}) 这里看到我们两个模块刚好前缀一样所以只配置一个路径即可