当前位置: 首页 > news >正文

h5手机网站实例老王传奇新开网站

h5手机网站实例,老王传奇新开网站,沙元埔做网站的公司,莞城网站制作对于Maven依赖管理项目构建工具的介绍#xff0c;我们将其分为上篇和下篇。如果您对文章感兴趣#xff0c;您可以在此链接中找到上篇详细内容#xff1a; Maven依赖管理项目构建工具#xff08;保姆级教学上篇#xff09;-CSDN博客 一、Maven依赖传递和依赖冲突 1. …        对于Maven依赖管理项目构建工具的介绍我们将其分为上篇和下篇。如果您对文章感兴趣您可以在此链接中找到上篇详细内容      Maven依赖管理项目构建工具保姆级教学上篇-CSDN博客 一、Maven依赖传递和依赖冲突 1. Maven依赖传递特性 概念 假如有Maven项目A项目B依赖A项目C依赖B。那么我们可以说 C依赖A。也就是说依赖的关系为C—B—A 那么我们执行项目C时会自动把B、A都下载导入到C项目的jar包文件夹中这就是依赖的传递性。 作用 简化依赖导入过程 确保依赖版本正确 传递的原则 在 A 依赖 BB 依赖 C 的前提下C 是否能够传递到 A取决于 B 依赖 C 时使用的依赖范围以及配置 B 依赖 C 时使用 compile 范围可以传递 B 依赖 C 时使用 test 或 provided 范围不能传递所以需要这样的 jar 包时就必须在需要的地方明确配置依赖才可以。 B 依赖 C 时若配置了以下标签optional则不能传递 dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.2.15/versionoptionaltrue/optional /dependency 依赖传递终止 非compile范围进行依赖传递 使用optional配置终止传递 依赖冲突传递的依赖已经存在 2. Maven依赖冲突特性 当直接引用或者间接引用出现了相同的jar包! 这时呢一个项目就会出现相同的重复jar包这就算作冲突依赖冲突避免出现重复依赖并且终止依赖传递 maven自动解决依赖冲突问题能力会按照自己的原则进行重复依赖选择。同时也提供了手动解决的冲突的方式不过不推荐 解决依赖冲突如何选择重复依赖方式 自动选择原则 短路优先原则第一原则 A—B—C—D—E—X(version 0.0.1) A—F—X(version 0.0.2) 则A依赖于X(version 0.0.2)。 依赖路径长度相同情况下则“先声明优先”第二原则 A—E—X(version 0.0.1) A—F—X(version 0.0.2) 在depencies/depencies中先声明的路径相同会优先选择 手动排除 dependencygroupIdcom.atguigu.maven/groupIdartifactIdpro01-maven-java/artifactIdversion1.0-SNAPSHOT/versionscopecompile/scope!-- 使用excludes标签配置依赖的排除 --exclusions!-- 在exclude标签中配置一个具体的排除 --exclusion!-- 指定要排除的依赖的坐标不需要写version --groupIdcommons-logging/groupIdartifactIdcommons-logging/artifactId/exclusion/exclusions /dependency 二、Maven工程继承和聚合关系 1. Maven工程继承关系 继承概念 Maven 继承是指在 Maven 的项目中让一个项目从另一个项目中继承配置信息的机制。继承可以让我们在多个项目中共享同一配置信息简化项目的管理和维护工作。 继承作用 在父工程中统一管理项目中的依赖信息。 它的背景是 对一个比较大型的项目进行了模块拆分。 一个 project 下面创建了很多个 module。 每一个 module 都需要配置自己的依赖信息。 它背后的需求是 在每一个 module 中各自维护各自的依赖信息很容易发生出入不易统一管理。 使用同一个框架内的不同 jar 包它们应该是同一个版本所以整个项目中使用的框架版本需要统一。 使用框架时所需要的 jar 包组合或者说依赖信息组合需要经过长期摸索和反复调试最终确定一个可用组合。这个耗费很大精力总结出来的方案不应该在新的项目中重新摸索。 通过在父工程中为整个项目维护依赖信息的组合既保证了整个项目使用规范、准确的 jar 包又能够将以往的经验沉淀下来节约时间和精力。 继承语法 父工程 groupIdcom.atguigu.maven/groupIdartifactIdpro03-maven-parent/artifactIdversion1.0-SNAPSHOT/version!-- 当前工程作为父工程它要去管理子工程所以打包方式必须是 pom --packagingpom/packaging 子工程 !-- 使用parent标签指定当前工程的父工程 -- parent!-- 父工程的坐标 --groupIdcom.atguigu.maven/groupIdartifactIdpro03-maven-parent/artifactIdversion1.0-SNAPSHOT/version /parent!-- 子工程的坐标 -- !-- 如果子工程坐标中的groupId和version与父工程一致那么可以省略 -- !-- groupIdcom.atguigu.maven/groupId -- artifactIdpro04-maven-module/artifactId !-- version1.0-SNAPSHOT/version -- 父工程依赖统一管理 父工程声明版本 !-- 使用dependencyManagement标签配置对依赖的管理 -- !-- 被管理的依赖并没有真正被引入到工程 -- dependencyManagementdependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-core/artifactIdversion6.0.10/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-beans/artifactIdversion6.0.10/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion6.0.10/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-expression/artifactIdversion6.0.10/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-aop/artifactIdversion6.0.10/version/dependency/dependencies /dependencyManagement 子工程引用版本 !-- 子工程引用父工程中的依赖信息时可以把版本号去掉。 -- !-- 把版本号去掉就表示子工程中这个依赖的版本由父工程决定。 -- !-- 具体来说是由父工程的dependencyManagement来决定。 -- dependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-core/artifactId/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-beans/artifactId/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactId/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-expression/artifactId/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-aop/artifactId/dependency /dependencies 在 Maven 中dependencyManagement 和 dependencies 元素通常都用于描述项目需要的依赖项但它们在功能和使用时有所不同 dependencyManagement: 主要用于声明项目需要使用的依赖项的版本号和相关的属性信息但实际并不会引入这些依赖项或者传递它们。即dependencyManagement 主要是用于统一管理同一版本的依赖项确保子模块和其他项目中的依赖项可以在同一版本上协同工作。如果一个子模块需要使用某个被声明在 dependencyManagement 中的依赖项则可以直接引用该依赖项而无需指定版本号。使用 dependencyManagement 可以让项目的依赖管理更加清晰和简单。 dependencies: 用于直接声明项目需要使用的依赖项并将这些依赖项及其直接依赖项传递到项目中。当 Maven 构建项目时会自动下载这些依赖项并构建出项目所需的类路径等信息。常用的依赖范围有 compile、test、provided、runtime 等。 因此dependencyManagement 和 dependencies 元素在 Maven 中常常搭配使用。dependencyManagement 用于管理依赖项的版本和属性信息而 dependencies 则用于将所需的依赖项引入并传递到项目中。 2. Maven工程聚合关系 聚合概念 Maven 聚合是指将多个项目组织到一个父级项目中以便一起构建和管理的机制。聚合可以帮助我们更好地管理一组相关的子项目同时简化它们的构建和部署过程。 聚合作用 管理多个子项目通过聚合可以将多个子项目组织在一起方便管理和维护。 构建和发布一组相关的项目通过聚合可以在一个命令中构建和发布多个相关的项目简化了部署和维护工作。 优化构建顺序通过聚合可以对多个项目进行顺序控制避免出现构建依赖混乱导致构建失败的情况。 统一管理依赖项通过聚合可以在父项目中管理公共依赖项和插件避免重复定义。 聚合语法 父项目中包含的子项目列表。 projectgroupIdcom.example/groupIdartifactIdparent-project/artifactIdpackagingpom/packagingversion1.0.0/versionmodulesmodulechild-project1/modulemodulechild-project2/module/modules /project 聚合演示 通过触发父工程构建命令、引发所有子模块构建产生反应堆 三、Maven私服 1. Maven私服简介 ①私服简介 Maven 私服是一种特殊的Maven远程仓库它是架设在局域网内的仓库服务用来代理位于外部的远程仓库中央仓库、其他远程公共仓库。 当然也并不是说私服只能建立在局域网也有很多公司会直接把私服部署到公网具体还是得看公司业务的性质是否是保密的等等因为局域网的话只能在公司用部署到公网的话员工在家里也可以办公使用。 建立了 Maven 私服后当局域网内的用户需要某个构件时会按照如下顺序进行请求和下载。 请求本地仓库若本地仓库不存在所需构件则跳转到第 2 步 请求 Maven 私服将所需构件下载到本地仓库若私服中不存在所需构件则跳转到第 3 步。 请求外部的远程仓库将所需构件下载并缓存到 Maven 私服若外部远程仓库不存在所需构件则 Maven 直接报错。 此外一些无法从外部仓库下载到的构件也能从本地上传到私服供其他人使用。 ②Maven私服的优势 节省外网带宽 消除对外部远程仓库的大量重复请求会消耗很大量的带宽降低外网带宽压力。 下载速度更快 Maven私服位于局域网内从私服下载构建更快更稳定。 便于部署第三方构件 有些构件无法从任何一个远程仓库中获得如公司或组织内部的私有构件、Oracle的JDBC驱动等建立私服之后就可以将这些构件部署到私服中供内部Maven项目使用。 提高项目的稳定性增强对项目的控制 如果不建立私服那么Maven项目的构件就高度依赖外部的远程仓库若外部网络不稳定则项目的构建过程也会变得不稳定。建立私服后即使外部网络状况不佳甚至中断只要私服中已经缓存了所需的构件Maven也能够正常运行。私服软件如Nexus提供了很多控制功能如权限管理、RELEASE/SNAPSHOT版本控制等可以对仓库进行一些更加高级的控制。 降低中央仓库得负荷压力 由于私服会缓存中央仓库得构件避免了很多对中央仓库的重复下载降低了中央仓库的负荷。 ③常见的Maven私服产品 Apache的Archiva JFrog的Artifactory Sonatype的Nexus[ˈneksəs]当前最流行、使用最广泛 2. Nexus下载安装 下载地址Download 解压以管理员身份打开CMD进入bin目录下执行./nexus /run命令启动 访问 Nexus 首页 首页地址http://localhost:8081/8081为默认端口号 3. 初始设置 这里参考提示 用户名admin 密码查看 E:\Server\nexus-3.61.0-02-win64\sonatype-work\nexus3\admin.password 文件 继续执行初始化 匿名登录启用还是禁用由于启用匿名登录后后续操作比较简单这里我们演示禁用匿名登录的操作 初始化完毕 4. Nexus上的各种仓库 仓库类型说明proxy某个远程仓库的代理group存放通过 Nexus 获取的第三方 jar 包hosted存放本团队其他开发人员部署到 Nexus 的 jar 包 仓库名称说明maven-centralNexus 对 Maven 中央仓库的代理maven-publicNexus 默认创建供开发人员下载使用的组仓库maven-releasesNexus 默认创建供开发人员部署自己 jar 包的宿主仓库 要求 releases 版本maven-snapshotsNexus 默认创建供开发人员部署自己 jar 包的宿主仓库 要求 snapshots 版本 初始状态下这几个仓库都没有内容 5. 通过 Nexus 下载 jar 包 修改本地maven的核心配置文件settings.xml设置新的本地仓库地址 !-- 配置一个新的 Maven 本地仓库 -- localRepositoryD:/maven-repository-new/localRepository 把我们原来配置阿里云仓库地址的 mirror 标签改成下面这样 mirroridnexus-mine/idmirrorOfcentral/mirrorOfnameNexus mine/nameurlhttp://localhost:8081/repository/maven-public//url /mirror 这里的 url 标签是这么来的 把上图中看到的地址复制出来即可。如果我们在前面允许了匿名访问到这里就够了。但如果我们禁用了匿名访问那么接下来我们还要继续配置 settings.xml serveridnexus-mine/idusernameadmin/usernamepasswordatguigu/password /server 这里需要格外注意server 标签内的 id 标签值必须和 mirror 标签中的 id 值一样。 找一个用到框架的 Maven 工程执行命令 mvn clean compile下载过程日志 下载后Nexus 服务器上就有了 jar 包 若下载速度太慢可以设置私服中中央仓库的地址为阿里云仓库地址 修改为http://maven.aliyun.com/nexus/content/groups/public/ 6. 将 jar 包部署到 Nexus maven工程中配置 distributionManagementsnapshotRepositoryidnexus-mine/idnameNexus Snapshot/nameurlhttp://localhost:8081/repository/maven-snapshots//url/snapshotRepository /distributionManagement 注意这里 snapshotRepository 的 id 标签必须和 settings.xml 中指定的 mirror 标签的 id 属性一致。 执行部署命令 mvn deploy7. 引用别人部署的 jar 包 maven工程中配置 repositoriesrepositoryidnexus-mine/idnamenexus-mine/nameurlhttp://localhost:8081/repository/maven-snapshots//urlsnapshotsenabledtrue/enabled/snapshotsreleasesenabledtrue/enabled/releases/repository /repositories
http://www.yutouwan.com/news/389179/

相关文章:

  • 网站多语言模块湖北seo公司
  • 哪家做网站公司最好南京江宁网站建设
  • mysql数据库建设网站大学生网站建设心得
  • 广东建设工程注册执业中心网站北京网站开发公司哪家好
  • 电子商务网站策划书模板网站地图的好处
  • 物流网站建设相关的问题wordpress信息导出
  • 深圳网站建设哪家比较好聊城做网站
  • 学校网站需求邢台集团网站建设报价
  • 青岛做网站的公司哪家好浅笑云主机
  • 企业建网站需要准备哪些资料呢潍坊建设工程信息网站
  • 无锡营销型网站网站代码优化方案
  • 建设工程信息查询哪个网站好网络推广内容包括什么
  • 专业做网站的公司 郑州咖搭姆少儿编程加盟
  • 做摄影网站的目的是什么意思大健康网站怎么样做
  • 龙文网站建设做公司网站的价格
  • wordpress网站案例网站服务器配置参考指南
  • 网站怎样做推广网站怎么seo
  • 外贸自建站可以自己做网站吗工程公司取名大全
  • 网站建设和建议头像制作免费软件
  • 柳州网站建设公各大招聘网站
  • 广东城乡住房建设厅网站公司网站建设的现状
  • 做wps的网站赚钱公司招聘做哪家网站
  • 网站开发的基本技术路线网站建设与管理自考重点
  • 织梦网站案例网站建设要学哪些东西
  • 《工程建设》官方网站中文网站外链查询工具
  • 被忽悠去做网销了网络营销优化培训
  • 国外免费推广网站有哪些wordpress 保存图片
  • 论述网站建设过程中应注意的问题汽车行业网站建设
  • 桂林北站时刻表wordpress打赏积分代码
  • 做网站要学什么语言网上培训ui设计