树形菜单的网站代码,北京比较有名的设计院,ktv网站模板,小程序开发需要多少钱?parent标签
用于父子工程项目#xff0c;什么是父子工程#xff1f;
顾名思义#xff0c;maven父子项目是一个有一个父项目#xff0c;父项目下面又有很多子项目的maven工程#xff0c;当然#xff0c;子项目下面还可以添加子项目#xff0c;从而形成一个树形…parent标签
用于父子工程项目什么是父子工程
顾名思义maven父子项目是一个有一个父项目父项目下面又有很多子项目的maven工程当然子项目下面还可以添加子项目从而形成一个树形的结构。那么这么做有什么好处呢有以下两点
依赖传递打包方便
父工程package 需要指定pom 子工程需要声明parent否则无法使用父pom的依赖
dependency 标签
导入依赖 和dependencyManagement 一起出现指定的版本优先级更高通常出现在父pom
parent dependency区别
通常parent用于做结构管理声明子工程继承父工程的 A依赖B C继承B
A B的依赖 B自定义class C B的依赖
dependencyManagement 标签
版本控制只声明版本不进行依赖导入
modules 标签
执定子工程如果不指定不能识别子工程
版本控制优先级
子项目的版本优先更高 子项目 dependency 子项目 dependencyManagement 父项目 dependency 父项目 dependencyManagement 如果出现同一个pom多个不同版本的相同依赖最下方优先级最高 实战案例
例如我们有如下项目目录
最外层的pom.xml即为父工程一般用于控制子工程版本
父pom.xml
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcn.wolfcode/groupIdartifactIdcaro2o/artifactIdversion3.8.3/versionnamecaro2o/nameurlhttp://www.ruoyi.vip/urldescriptione店邦o2o平台管理系统/descriptionpropertiescaro2o.version3.8.3/caro2o.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingjava.version1.8/java.versionmaven-jar-plugin.version3.1.1/maven-jar-plugin.versiondruid.version1.2.11/druid.versionbitwalker.version1.21/bitwalker.versionswagger.version3.0.0/swagger.versionkaptcha.version2.3.2/kaptcha.versionmybatis-spring-boot.version2.2.2/mybatis-spring-boot.versionpagehelper.boot.version1.4.1/pagehelper.boot.versionfastjson.version2.0.8/fastjson.versionoshi.version6.1.6/oshi.versioncommons.io.version2.11.0/commons.io.versioncommons.fileupload.version1.4/commons.fileupload.versioncommons.collections.version3.2.2/commons.collections.versionpoi.version4.1.2/poi.versionvelocity.version2.3/velocity.versionjwt.version0.9.1/jwt.version/properties!-- 依赖声明 --dependencyManagementdependencies!-- SpringBoot的依赖配置--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion2.5.14/versiontypepom/typescopeimport/scope/dependency!-- 阿里数据库连接池 --dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion${druid.version}/version/dependency!-- 解析客户端操作系统、浏览器等 --dependencygroupIdeu.bitwalker/groupIdartifactIdUserAgentUtils/artifactIdversion${bitwalker.version}/version/dependency!-- SpringBoot集成mybatis框架 --dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion${mybatis-spring-boot.version}/version/dependency!-- pagehelper 分页插件 --dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion${pagehelper.boot.version}/version/dependency!-- 获取系统信息 --dependencygroupIdcom.github.oshi/groupIdartifactIdoshi-core/artifactIdversion${oshi.version}/version/dependency!-- Swagger3依赖 --dependencygroupIdio.springfox/groupIdartifactIdspringfox-boot-starter/artifactIdversion${swagger.version}/versionexclusionsexclusiongroupIdio.swagger/groupIdartifactIdswagger-models/artifactId/exclusion/exclusions/dependency!-- io常用工具类 --dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion${commons.io.version}/version/dependency!-- 文件上传工具类 --dependencygroupIdcommons-fileupload/groupIdartifactIdcommons-fileupload/artifactIdversion${commons.fileupload.version}/version/dependency!-- excel工具 --dependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion${poi.version}/version/dependency!-- velocity代码生成使用模板 --dependencygroupIdorg.apache.velocity/groupIdartifactIdvelocity-engine-core/artifactIdversion${velocity.version}/version/dependency!-- collections工具类 --dependencygroupIdcommons-collections/groupIdartifactIdcommons-collections/artifactIdversion${commons.collections.version}/version/dependency!-- 阿里JSON解析器 --dependencygroupIdcom.alibaba.fastjson2/groupIdartifactIdfastjson2/artifactIdversion${fastjson.version}/version/dependency!-- Token生成与解析--dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion${jwt.version}/version/dependency!-- 验证码 --dependencygroupIdcom.github.penggle/groupIdartifactIdkaptcha/artifactIdversion${kaptcha.version}/version/dependency!-- 定时任务--dependencygroupIdcn.wolfcode/groupIdartifactIdcaro2o-quartz/artifactIdversion${caro2o.version}/version/dependency!-- 代码生成--dependencygroupIdcn.wolfcode/groupIdartifactIdcaro2o-generator/artifactIdversion${caro2o.version}/version/dependency!-- 核心模块--dependencygroupIdcn.wolfcode/groupIdartifactIdcaro2o-framework/artifactIdversion${caro2o.version}/version/dependency!-- 系统模块--dependencygroupIdcn.wolfcode/groupIdartifactIdcaro2o-system/artifactIdversion${caro2o.version}/version/dependency!-- 通用工具--dependencygroupIdcn.wolfcode/groupIdartifactIdcaro2o-common/artifactIdversion${caro2o.version}/version/dependency!-- 业务模块--dependencygroupIdcn.wolfcode/groupIdartifactIdcaro2o-business/artifactIdversion${caro2o.version}/version/dependency/dependencies/dependencyManagementmodulesmodulecaro2o-admin/modulemodulecaro2o-framework/modulemodulecaro2o-system/modulemodulecaro2o-quartz/modulemodulecaro2o-generator/modulemodulecaro2o-common/modulemodulecaro2o-business/module/modulespackagingpom/packagingdependencies/dependenciesbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.1/versionconfigurationsource${java.version}/sourcetarget${java.version}/targetencoding${project.build.sourceEncoding}/encoding/configuration/plugin/plugins/buildrepositoriesrepositoryidpublic/idnamealiyun nexus/nameurlhttps://maven.aliyun.com/repository/public/urlreleasesenabledtrue/enabled/releases/repository/repositoriespluginRepositoriespluginRepositoryidpublic/idnamealiyun nexus/nameurlhttps://maven.aliyun.com/repository/public/urlreleasesenabledtrue/enabled/releasessnapshotsenabledfalse/enabled/snapshots/pluginRepository/pluginRepositories/project子项目迭代时一般是以相同版本迭代所以用caro2o.version3.8.3/caro2o.version来统一控制版本
写在dependencyManagement标签中的依赖为子项目可选择加载的依赖若某子项目要加载该依赖则在自己的pom.xml中的dependencies里添加即可不用再写版本号version因为都交由父项目统一管理了而这就避免了不同子项目引用相同依赖时因版本不同而产生冲突的问题。
写在dependencies标签中的依赖为子项目必须加载的依赖下略。 服务启动入口子项目caro2o-admin的pom.xml
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdcaro2o/artifactIdgroupIdcn.wolfcode/groupIdversion3.8.3/version/parentmodelVersion4.0.0/modelVersionpackagingjar/packagingartifactIdcaro2o-admin/artifactIddescriptionweb服务入口/descriptiondependencies!-- spring-boot-devtools --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdoptionaltrue/optional !-- 表示依赖不会传递 --/dependency!-- swagger3--dependencygroupIdio.springfox/groupIdartifactIdspringfox-boot-starter/artifactId/dependency!-- 防止进入swagger页面报类型转换错误排除3.0.0中的引用手动增加1.6.2版本 --dependencygroupIdio.swagger/groupIdartifactIdswagger-models/artifactIdversion1.6.2/version/dependency!-- Mysql驱动包 --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependency!-- 核心模块--dependencygroupIdcn.wolfcode/groupIdartifactIdcaro2o-framework/artifactId/dependency!-- 定时任务--dependencygroupIdcn.wolfcode/groupIdartifactIdcaro2o-quartz/artifactId/dependency!-- 代码生成--dependencygroupIdcn.wolfcode/groupIdartifactIdcaro2o-generator/artifactId/dependency!-- 业务模块--dependencygroupIdcn.wolfcode/groupIdartifactIdcaro2o-business/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion2.1.1.RELEASE/versionconfigurationforktrue/fork !-- 如果没有该配置devtools不会生效 --/configurationexecutionsexecutiongoalsgoalrepackage/goal/goals/execution/executions/pluginplugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-war-plugin/artifactId version3.1.0/version configurationfailOnMissingWebXmlfalse/failOnMissingWebXmlwarName${project.artifactId}/warName/configuration /plugin /pluginsfinalName${project.artifactId}/finalName/build/project注意 比如该用若依框架搭建的demo项目我要新增一个名为caro2o-business的业务子项目则需要将该业务子项目作为模块依赖添加到服务启动入口子项目caro2o-admin的pom.xml里否则服务启动后admin没加载到business模块内的代码就会出现404或500等一系列错误。 然后在业务子项目的pom.xml里添加工具子项目等不同模块的依赖如 因为父项目已经控制版本号了所以这里可以不用再写version。在图中的情况若整个项目整体迭代而在父项目的pom.xml中升级更改了统一版本号则会有报错的可能因为Maven中首先取的是子项目自己pom.xml里的依赖版本号就会导致引用caro2o-system时和别的子项目版本出现冲突。 拓展 maven项目的groupId和artifactId什么意思 首先要知道groupId和artifactId的存在是为了定位到你的项目所以它们充当着坐标的角色。 groupIdgroup意思为组所以理解为是组织Id也是公司Id通常它的写法与公司域名类似。一般分三段即“域.公司名称.子项目”域指org、com、cn 等类似计算机网络里学过的cn指chinacom商业org非盈利组织。 artifactId即一个具体的项目命名方式自己决定。
举个某马大型商城项目结构为例该项目采用了微服务架构所以使用了聚合方式即一个大项目下几个小项目这样是为了便于版本管理 例如 groupIdcom.leyou.parent /groupId其中com为商业标识leyou为这个乐优商城项目的公司名称parent是项目名称但是因为这个项目采用了聚合方式下面还有许多项目这个作为最顶层容器所以起名parent。 artifactIdleyou/ artifactId 代表这个项目的总名称为leyou。 其下面的子项目命名为 groupIdcom.leyou.user/ groupId前两段域和公司名都相同只是项目那儿放的这个具体的子项目名称。 artifactIdleyou-user /artifactId使用的leyou-user表示该项目是leyou项目下的user子项目这种方式结构清晰易懂。 采用这种命名后项目内部结构通常要相对应。 例如
这个项目是大项目下每个项目作为一个单独的服务对于那些可能被其他服务调用的服务可以再拆分为两个例如这里子项目leyou-item因为为被其他服务调用所以又才分为了interface和service两个子项目interface对外提供服务调用service作具体的业务操作。