Maven进阶笔记-创新互联

Mave进阶 内容概览
  • 分模块开发的意义
  • 依赖管理
  • 聚合与继承
  • 属性管理
  • 多环境配置与应用
  • 游戏
学习目标
  1. 理解分模块开发的意义
  2. 能使用聚合工程快速构建项目
  3. 能够使用继承简单化项目配置
  4. 能够根据需求配置生产、开发、测试、环境,并在各个环境间切换运行
分模块开发与设计 分模块开发的意义
  • 将原始模块按照功能拆分成若干个子模块,方便魔窟间的相互调用,接口共享
分模块开发(模块拆分步骤)

步骤

行唐ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
  1. 创建Maven模块

  2. 书写模块代码

    注意事项:分模块开发需要先针对模块功能进行设计,在进行编码。不会先将工程开发完毕,然后进行拆分

  3. 通过maven指令安装模块到本地仓库(insatall指令)

    注意事项:团队内部开发需要发布模块功能到团队内部可共享的仓库中(游戏)

依赖管理
  • 依赖指当前项目运行所需的jar,一个项目可以设置多个依赖

  • 格式:

    org.springframeworkspring-webmvc5.2.10.RELEASE
依赖传递
  • 依赖具有传递性
    • 直接依赖:在当前项目中通过依赖配置简历的依赖关系
    • 间接依赖:被资源的资源如果依赖其他资源,当前项目间解依赖其他资源
  • 依赖传递冲突问题
    • 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
    • 声明优先:当资源在相同层级被依赖时,配置顺序越靠前的覆盖配置顺序靠后的
    • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
    • 可在idea中看mave结构选项内显示哪个优先级哪个大,可以打开看结构关系深度图
可选依赖
  • 可选依赖指对外隐藏当前所依赖的资源——不透明

  • 可选依赖是隐藏带你给钱工程所依赖的资源,隐藏后对应资源不具有依赖传递性true

    org.springframeworkspring-webmvc5.2.10.RELEASEtrue
排除依赖
  • 排除依赖指主动断开依赖的资源,被排除的资源无需治党版本——不需要

  • 在依赖的模块内排除不需要的依赖

com.hcxMaven_03_pojo1.0-SNAPSHOTlog4jlog4j
  • 排除依赖资源仅治党GA即可,无需指定V
继承和聚合 聚合
  • 聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合
  • 聚合工程:通常是一个不具有业务功能的"空"工程(有且仅有一个pom文件)
  • 作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,事项对所有包含的模块进行同步构建
    • 当工程中某个模块发送更新(变更)时,必须保障工程中已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题
聚合工程开发

步骤:

  1. 创建Maven模块,设置打包类型为pom

    com.hcxmaven_01_parent1.0-SNAPSHOTpom

    注意事项:每个maven工程都有对应的打包方式,默认为jar,web工程打包方式为war

  2. 设置当前聚合工程中所包含的子模块名称

    ../Maven_03_pojo../maven_04_dao../springmvc_08_ssm

    注意事项:聚合工程中所包含的模块在进行构建时会更卷模块间的依赖关系设置构建顺序,与聚合工程中模块的配置书写位置无关,参与聚合的工程无法向上干燥是否参与聚合,只能向下配置哪些模块参与本工程的聚合

继承
  • 概念:继承描述的是连个工程间的关系,与java中的继承类似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
  • 作用:
    • 简化配置
    • 减少版本冲突
继承关系开发工程
  1. 创建Mave模块,设置打包类型为pom

    pom

    注意事项:建议父工程打包方式设为pom

  2. 在父工程的pom文件纵配置依赖关系(子工程将沿用父工程中的依赖关系)

    org.springframeworkspring-webmvc5.2.10.RRLEASE......
  3. 配置子工程中可选的依赖关系

    com.alibabadruid1.1.16.......
  4. 在子工程中配置当前使用父工程中可选依赖的坐标

    com.alibabadruid

    注意事项:子工程中使用父工程中的可选依赖是,仅需要提供群组id和项目id,版本由父工程统一管理,避免版本冲突子工程中还可以定义父工程中没有定义的依赖关系

聚合和继承的区别
  • 作用
    • 聚合用于快速构建项目
    • 继承用于快速配置
  • 相同点
    • 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
    • 聚合与继承均属于设计型模块,并无实际的模块内容
  • 不同点:
    • 聚合是当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
    • 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己
属性 属性

解决版本号统一问题

属性的配置与使用
  1. 定义属性

    5.2.10.RELEASE

    注意事项:properties标签内的标签可自行定义【尽量做到间名知意】

  2. 引用属性

    org.springframeworkspring-webmvc${spring.version}org.springframeworkspring-jdbc${spring.version}org.springframeworkspring-test${spring.version}
配置文件加载属性 资源文件引用属性
  1. 定义属性

    5.2.10.RELEASE4.12jdbc:mysql://127.0.0.1:3306/ssm_db
  2. 配置文件中引用属性

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=${jdbc.url}
    jdbc.username=root
    jdbc.password=******
  3. 开启资源文件目录加载属性的过滤器

    ${project.basedir}/src/main/resourcestrue
  4. 配置maven打war包,忽略web.xml检查

     ${project.basedir}/src/main/resources true
其他属性
  • 属性列表

    1. 自定义属性(常用)
    2. 内置属性
    3. Setting属性
    4. Java系统属性
    5. 环境变量属性
  • 表格详细展示(了解)

    属性分类引用格式示例
    自定义属性${自定义属性名}${spring.version}
    内置属性${内置属性名}${basedir} ${version}
    Setting属性${setting.属性名}${settings.localRepository}
    Java系统属性${系统属性分类.系统属性名}${user.home}
    环境变量属性${env.环境变量属性名}${env.JAVA_HOME}
版本 版本管理
  • 工程版本
    • SNAPSHOT(快照版本)
      • 项目开发过程中临时输出的版本,称为快照版本
      • 快照版本会随着开发的进展不断更新
    • RELEASE(发布版本)
      • 项目开发到静茹阶段里程碑后向团队外部发布较为稳定的版本,这种版本所对应的构件文件是稳定的,即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本
  • 发布版本
    • alpha版
    • beta版
    • 纯数字版
多环境配置与应用 多环境开发
  • mave提供了配置多种环境的设定,帮助开发者使用过程种快速切换环境
  1. 定义多环境

    env_dep jdbc:mysql://127.0.0.1:3306/ssm_db truepro_dep jdbc:mysql://127.1.1.1:3306/ssm_dbtest_dep jdbc:mysql://127.2.2.2:3306/ssm_db
  2. 使用多环境(构建过程)

    mvn 指令 -P 环境定义id

    范例:

    mvn install -P pro_env
跳过测试

目的:为了跳过一些没有开发完成的完成测试内容

  • 跳过测试

    mvn 指令 -D skipTests
  • 范例:

    mvn install -D skipTests

    注意事项:执行的项目构建指令必须包含测试声明周期,否则无效果。例如执行compile生命周期,不经过test生命周期

  • 细粒度控制跳过测试

     org.apache.maven.plugins maven-surefire-plugin 2.12.4  true   **/User*Test.java    **/BookServiceTest.java  
游戏
  • 游戏是一台独立的服务器,用于解决团队内容不的资源共享与资源同步问题

  • Nexus

    • Sonatype公司的一款maven游戏产品
    • 下载地址:https://help.sonatype.com/repomanager3/download
Nexus安装与启动
  • 启动服务器(命令行启动)

    nexus.exe /run nexus
  • 访问服务器(默认端口:8081)

    http://localhost:8081
  • 修改基础配置信息

    • 安装路径下etc目录中nexus-default.properties文件保存有nexus基础配置信息,例如访问端口
  • 修改服务器运行配置信息

    • 安装路径下bin目录中nexus.vmoptions文件保存有nexus服务器对应的配置信息,例如默认占用内存空间
游戏资源操作流程分析
  • 我们的坐标是放在游戏的仓库中,下载资源是使用仓库组
游戏仓库分类
仓库类别英文名称功能关联操作
宿主仓库hosted保存自主研发+第三方资源上传
代理仓库proxy代理连接中央仓库下载
仓库组group为长裤编组简化下载操作下载

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享文章:Maven进阶笔记-创新互联
文章来源:http://hbruida.cn/article/csoooc.html