图片网站建设,河南省建设安全监督总站网站,wordpress 换空间域名,网站在哪里备案将多个springboot项目的pom.xml文件整合
0.0、前因
刚入公司敲代码时、发现一个项目中会包含多个子项目、每个子项目会代表一个功能模块、这属实是把我这个菜鸟惊叹到了。而这种分而治之的方式也引申出一个问题#xff1a;各子项目的依赖如何统一管理#xff1f;
我…将多个springboot项目的pom.xml文件整合
0.0、前因
刚入公司敲代码时、发现一个项目中会包含多个子项目、每个子项目会代表一个功能模块、这属实是把我这个菜鸟惊叹到了。而这种分而治之的方式也引申出一个问题各子项目的依赖如何统一管理
我们知道、每个项目都会导入特定依赖、每个依赖又有若干版本、如果在这个项目使用这个版本、那个项目使用那个版本、是很容易造成混乱和版本冲突的。因此可将依赖分为父子关系。即一个父依赖管理若干个子依赖。
直接上代码
父依赖
?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/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.6.11/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.hcgx-root/groupIdartifactIdhcgx-root/artifactIdversion0.0.1-SNAPSHOT/versionpackagingpom/packagingmodulesmodulehcgx-service/module/modulespropertiesjava.version1.8/java.versionmysql-connector.version8.0.20/mysql-connector.versionmaven-compiler-plugin.version3.8.1/maven-compiler-plugin.version/propertiesdependencyManagementdependencies!--Mysql数据库驱动--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql-connector.version}/version/dependency/dependencies/dependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion${maven-compiler-plugin.version}/versionconfigurationsource1.8/sourcetarget1.8/targetencodingUTF-8/encoding/configuration/pluginplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project1、这玩意是啥
首先parent 意思可以理解为继承、整体意思是此xml会继承spring-boot-starter-parent文件中所有的依赖、相当于继承父依赖。而且这玩意是每一个springboot初始化时都存在的、它是springboot自动帮我们配置的。为的就是省略我们在创建sping项目时一些共有依赖
parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.6.11/versionrelativePath/ !-- lookup parent from repository --
/parent2、表示maven版本、必须填4.0.0才能使用多maven项目整合 modelVersion4.0.0/modelVersion3、此xml文件的名称、后面与子项目关联时是用到
groupIdcom.hcgx-root/groupId
artifactIdhcgx-root/artifactId
version0.0.1-SNAPSHOT/version4、打包方式、默认会打包成 jar、因为父项目只是用来统筹子项目的依赖所以设置为pom表示不动它。
每一个pom.xml文件都代表一个maven项目、需要结合此文件将项目打成jar包、而将程序打成jar包的目的是因为项目中有java代码且这些代码需要用到这些依赖、而父项目中已经将 src 目录删除了、不考虑其内的子项目、那么是没有理由需要被打成jar包子项目自己有pom.xml文件把自己打成 jar 包 packagingpom/packaging5、用来关联子项目名称、hcgx-service就是子项目的名称属实是双向奔赴
modulesmodulehcgx-service/module
/modules6、此标签内管理依赖版本、mysql-connector.version是自定义的标签使用时${mysql-connector.version}来使用对应标签下的版本号注版本号一定是真实存在的不然使用自定义标签时会爆红
propertiesjava.version1.8/java.versionmysql-connector.version8.0.20/mysql-connector.versionmaven-compiler-plugin.version3.8.1/maven-compiler-plugin.version
/properties7、dependencyManagement 标签表示模板、正常情况下直接使用 dependencies即最外层没有dependencyManagement,表示导入此依赖、而dependencyManagement标签只是作为一个依赖模板、 version${mysql-connector.version}/version存储这个依赖模板的版本号后面子项目直接使用:
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId
/dependency就可以导入依赖且不需要指定依赖版本。
dependencyManagementdependencies!--Mysql数据库驱动--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql-connector.version}/version/dependency/dependencies/dependencyManagement8、dependencies 在父项目中导入的依赖会被所有子项目默认导入 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependencies子项目
?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/modelVersionparentgroupIdcom.hcgx-root/groupIdartifactIdhcgx-root/artifactIdversion0.0.1-SNAPSHOT/version/parentgroupIdcom.hcgx-service/groupIdartifactIdhcgx-service/artifactIdversion0.0.1-SNAPSHOT/versionnamehcgx-service/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion${maven-compiler-plugin.version}/versionconfigurationsource1.8/sourcetarget1.8/targetencodingUTF-8/encoding/configuration/pluginplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project
1、parent 标签里面是用来描述需要继承的对象、即使用此标签后我们会继承 groupId 为 com.hcgx-root 且 artifactId 为 hcgx-root 的父项目这个内容其实在上面步骤 3 里。
parentgroupIdcom.hcgx-root/groupIdartifactIdhcgx-root/artifactIdversion0.0.1-SNAPSHOT/version
/parent2、自己的名称等等
groupIdcom.hcgx-service/groupId
artifactIdhcgx-service/artifactId
version0.0.1-SNAPSHOT/version
namehcgx-service/name
descriptionDemo project for Spring Boot/description3、不用指定版本号父项目指定了
dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependency
/dependencies0.1、文件目录