网站制作自己做服务器,短链,某颜值女主播低俗内容流出视频,wordpress 代码开发依赖传递和依赖冲突
依赖传递指的是当一个模块或库 A 依赖于另一个模块或库 B#xff0c;而 B 又依赖于模块或库 C#xff0c;那么 A 会间接依赖于 C。这种依赖传递结构可以形成一个依赖树。当我们引入一个库或框架时#xff0c;构建工具#xff08;如 Maven、Gradle…依赖传递和依赖冲突
依赖传递指的是当一个模块或库 A 依赖于另一个模块或库 B而 B 又依赖于模块或库 C那么 A 会间接依赖于 C。这种依赖传递结构可以形成一个依赖树。当我们引入一个库或框架时构建工具如 Maven、Gradle会自动解析和加载其所有的直接和间接依赖确保这些依赖都可用
即导入依赖的同时也会导入此依赖的依赖
依赖传递的作用 减少重复依赖当多个项目依赖同一个库时Maven 可以自动下载并且只下载一次该库。这样可以减少项目的构建时间和磁盘空间。自动管理依赖: Maven 可以自动管理依赖项使用依赖传递简化了依赖项的管理使项目构建更加可靠和一致。确保依赖版本正确性通过依赖传递的依赖之间都不会存在版本兼容性问题确实依赖的版本正确性 依赖冲突
当发现要依赖的依赖项已经完成依赖就会终止依赖传递避免循环依赖和重复依赖的问题
依赖冲突的解决原则
依赖传递链短的优先例
A—B—C—D—E—X(version 0.0.1)
A—F—X(version 0.0.2)
则A依赖于X(version 0.0.2)。
若依赖传递链一样长则先声明者优先
在\depencies\/depencies中路径长度相同先声明的会优先选择
构建管理
项目构建是指将源代码、依赖库和资源文件等转换成可执行或可部署的应用程序的过程在这个过程中包括编译源代码、链接依赖库、打包和部署等多个步骤
主动触发场景 重新编译 : 编译不充分, 部分文件没有被编译!打包 : 独立部署到外部服务器软件,打包部署部署本地或者私服仓库 : maven工程加入到本地或者私服仓库,供其他工程使用 命令方式构建:
语法: mvn 构建命令 构建命令....
命令描述mvn clean清理编译或打包后的项目结构,删除target文件夹mvn compile编译项目生成target文件mvn test执行测试源码 (测试)mvn site生成一个项目依赖信息的展示页面mvn package打包项目生成war / jar 文件mvn install打包后上传到maven本地仓库(本地部署)mvn deploy只打包上传到maven私服仓库(私服部署) 注①命令执行需要进入项目的根路径 ②部署必须是jar包形式 idea中maven工具处理
即使用idea右侧边栏上的maven工具处理
构建命令周期
构建生命周期可以理解成是一组固定构建命令的有序集合触发周期后的命令会自动触发周期前的命令也是一种简化构建的思路!
在一个周期中触发周期位于后面的命令会自动先触发此命令前面的所有命令 清理周期主要是对项目编译生成文件进行清理 包含命令clean 默认周期定义了真正构件时所需要执行的所有步骤它是生命周期中最核心的部分 包含命令compile - test - package - install / deploy 报告周期 包含命令site 打包: mvn clean package 本地仓库: mvn clean install 建议在编译compile、打包package、部署install的命令之前加上clean命令
关于配置插件 build标签配置插件在build标签中进行 plugins标签放在build标签中plugins中有着多个plugin标签 plugin标签表示一个插件plugin中有着指定插件的gav属性 Maven继承和聚合特性
Maven工程继承
Maven继承是指在Maven的项目中让一个项目从另一个项目中继承配置信息的机制。Maven继承可以让我们在多个项目中共享同一配置信息简化项目的管理和维护工作
作用
在父工程中统一管理项目中的依赖信息进行统一版本管理
继承的使用语法
父工程 父工程的打包方式必须是pom所以要packaging属性设置为pom将src目录删除因为父工程用来继承配置信息不需要业务代码只需要pom.xml父工程中在dependencies标签中导入依赖的话其所有的子工程都会导入这些依赖父工程中在dependencyManagement中导入依赖的话子工程中不会下载这些依赖这些依赖的版本号会被继承到子工程 groupIdcom.atguigu.maven/groupId
artifactIdpro03-maven-parent/artifactId
version1.0-SNAPSHOT/version
!-- 当前工程作为父工程它要去管理子工程所以打包方式必须是 pom --
packagingpom/packagingdependencies/dependenciesdependencyManagementdependenciesdependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.33/version/dependency/dependencies
/dependencyManagement子工程 子工程创建在其父工程下创建后会自动生成一个parent标签其中存放着其父工程的gav属性若一个依赖在父工程中的dependencyManagement标签中导入子工程想导入其依赖只需要在dependencies标签内的dependency标签中的groupId和artifactId即可版本号会自动继承父工程中dependencyManagement标签中的相应依赖的version即gav只要写ga若是子工程导入的依赖中指定了版本号则按照子工程的版本号来类似于Java中的重写 parentartifactIdmaven-pom-parent/artifactIdgroupIdcom.ergou/groupIdversion1.0-SNAPSHOT/version
/parent
modelVersion4.0.0/modelVersiongroupIdcom.ergou/groupId
artifactIdmaven-shop-order/artifactIddependenciesdependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId!--可以不用写版本号会继承父工程中的版本号--/dependency/dependenciesMaven工程聚合
Maven聚合是指将多个项目组织到一个父级项目中通过触发父工程的构建统一按顺序触发子工程构建的过程
聚合的作用 统一管理子项目构建通过聚合可以将多个子项目组织在一起方便管理和维护。优化构建顺序通过聚合可以对多个项目进行顺序控制避免出现构建依赖混乱导致构建失败的情况。 在父工程的pom.xml文件中会多出一个modules标签其中有代表着子工程的module标签父工程聚合管理着module标签对应的子工程
modulesmodulemaven-test-son/module
/modules