• Maven


    Maven

    1. 什么是 Maven ?
    • Maven 是Apache 基金下的个 Java 平台的项目自动化构建工具,基于项目对象模型(POM)
    1. Maven 可以作什么
    • 自动管理 jar 包之间的依赖关系
    • 根据坐标 获取第三方 jar 包
    • 项目多模块管理
    • 构建项目
    1. 构建项目的环节
    • 清理 (clean):删除以前的编译结果,为重新编译做好准备
    • 编译 (compile):将Java 源程序编译为字节码文件测试(test):针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性
    • 报告 :在每一次测试后以标准的格式记录和展示测试结果
    • 打包 (package):将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web工程对应 war 包。
    • 安装 (install):在 Maven 环境下特指将打包的结果——jar 包或 war 包安装到本地仓库中。
    • 部署 (deploy):将打包的结果部署到远程仓库或将 war 包部署到服务器上运行。
    1. Maven 常用命令
    • mvn -version/-v —— 显示版本信息
    • mvn clean —— 清空生成的文件
    • mvn compile —— 编译mvn test —— 编译并测试
    • mvn package —— 生成target目录,编译、测试代码,生成测试报告,生成jar/war文件
    • mvn site —— 生成项目相关信息的网站
    • mvn clean compile —— 表示先运行清理之后运行编译,会将代码编译到target文件夹中
    • mvn clean package —— 运行清理和打包
    • mvn clean install —— 运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以调用
    • mvn clean deploy —— 运行清理和发布
    1. Maven 依赖范围
    • compile 默认范围,编译 测试 运行 都有效,会打入包中
    • provided 编译测试 有效,运行期不需要提供,不会打入包中。比如 javax.servlet ,当项目部署时Web容器自带servlet,所以不需要在运行时生效
    • runtime :测试运行 有效,需要打入包中
    • test :测试 有效,Junit,不会打入包中
    • system :编译测试 都有效,由于关联本机,所以可移植性差
    1. 统一依赖管理 jar包 的版本
    • properties 统一声明版本号,dependices中引用声明的版本号
    • 多模块项目,父工程统一管理其他模块的公共依赖,子工程模块以与父工程是聚合 关系,在父工程的module
    1. 依赖冲突解决方法
    • Maven 自动处理依赖冲突:最短路径优先相同路径,先声明优先
    • 手动处理依赖冲突:使用exclusion 排除不需要的依赖
    1. Maven 生命周期 ,Clean、Default、Site
    • 三套生命周期相互独立每个生命周期对应自己的几个阶段
    • 特定某个生命周期,运行任何一个阶段,它前面所有阶段都会运行

    Gradle 与 Maven

    1. Gradle特性
    • 比 Maven 粒度更小,Maven是POM模型,而Gradle每个Project对象还可以划分为Task
    • gradle 比 Maven 更灵活,依赖导入与管理简单,可读性强。
    • DSL语法,Groovy动态语言,闭包,钩子函数
    • 但是使用Gradle需要额外学习语法,有一定的学习曲线
    1. Gradle 生命周期介绍
    • Initialization(初始化阶段),通过settings.gradle 判断有哪些项目需要进行初始化,加载所有需要初始化的项目的build.gradle 文件并为每个项目创建project 对象
    • Configuration(配置阶段),扫描各项目下的build.gradle 脚本,对project 进行配置(执行哪些任务,运行哪些插件,执行哪些逻辑),并且构造Task 任务关系依赖图 以便在执行阶段按照依赖关系执行Task中的配置代码(如println方法)
    • Execution(执行阶段),通过配置阶段的 Task 图,按顺序执行需要执行的 任务中的动作代码,就是执行doFirstdoLast 等代码
    1. Gradle快的原因
    • 项目启动时,会开启一个client,然后启动一个daemon,通过client向daemon收发请求,项目关闭,client关闭,daemon保持启动,有类似项目再次部署时,会直接通过新的client访问已经启动的daemon,所以速度很快,默认daemon不使用3小时后关闭;不同项目兼容性考虑,也可使用--no-daemon 启动项目,就没有速度优势了
    • 支持Groovy的动态脚本语言。核心是Project与Task。项目启动时,会启动一个Client 和一个deamon ,每个project实例有变动时,client会直接给daemon
  • 相关阅读:
    一键登录功能实现
    weblogic.xml中的虚拟目录的配置
    oracle定时器在项目中的应用
    redis主从架构的搭建
    oracle数据库中的trim不起作用
    datetimepicker日期框选择后,无法触发bootstrapValidator
    付出总有收获
    失落
    开启产品之路
    Nodejs入门级
  • 原文地址:https://www.cnblogs.com/luckyCoder/p/12743284.html
Copyright © 2020-2023  润新知