maven、md5、git学习
Maven进阶使用(Maven聚合工程)
一、maven基础知识回顾
1、maven介绍
maven 是一个项目管理工具。
依赖管理:就是对jar包的管理。通过导入maven坐标,就相当于将仓库中的jar包导入了当前项目中。
项目构建:通过maven的一个命令就可以完成项目从清理、编译、测试、报告、打包,部署整个过程。
2、maven的仓库类型
(1)本地仓库
(2)远程仓库
①maven中央仓库(地址:http://repo2.maven.org/maven2/)
②maven私服(公司局域网内的仓库,需要自己搭建)
③其他公共远程仓库(例如apache提供的远程仓库,地址: http://repo.maven.apache.org/maven2/) 本地仓库—》maven私服—》maven中央仓库
3、maven常用命令
- clean: 清理
- compile:编译
- test: 测试
- package:打包
- install: 安装
4、maven坐标书写规范
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency>
二、maven的依赖传递
1、什么是依赖传递
在maven中,依赖是可以传递的,假设存在三个项目,分别是项目A,项目B以及项目C。假设C依赖 B,B依赖A,那么我们可以根据maven项目依赖的特征不难推出项目C也依赖A。
依赖冲突
由于依赖传递现象的存在, spring-webmvc 依赖 spirng-beans-5.1.5,spring-aop 依赖 springbeans-5.1.6,但是发现 spirng-beans-5.1.5 加入到了工程中,而我们希望 spring-beans-5.1.6 加入工 程。这就造成了依赖冲突。
2、如何解决依赖冲突
- 使用maven提供的依赖调解原则
- 第一声明者优先原则
- 路径近者优先原则
- 排除依赖
- 锁定版本
3、 依赖调节原则——第一声明者优先原则
在 pom 文件中定义依赖,以先声明的依赖为准。其实就是根据坐标导入的顺序来确定最终使用哪个传 递过来的依赖。
4、依赖调节原则——路径近者优先原则
总结:直接依赖大于依赖传递
5、排除依赖
可以使用exclusions标签将传递过来的依赖排除出去。
6、版本锁定
采用直接锁定版本的方法确定依赖jar包的版本,版本锁定后则不考虑依赖的声明顺序或依赖的路径,以 锁定的版本为准添加到工程中,此方法在企业开发中经常使用。
版本锁定的使用方式:
第一步:在dependencyManagement标签中锁定依赖的版本
第二步:在dependencies标签中声明需要导入的maven坐标
①在dependencyManagement标签中锁定依赖的版本
②在dependencies标签中声明需要导入的maven坐标
三、maven聚合工程(分模块)
概念:
在现实生活中,汽车厂家进行汽车生产时,由于整个生产过程非常复杂和繁琐,工作量非常大,所以厂 家都会将整个汽车的部件分开生产,最终再将生产好的部件进行组装,形成一台完整的汽车。
1、分模块构建maven工程分析
在企业项目开发中,由于项目规模大,业务复杂,参与的人员比较多,一般会通过合理的模块拆分将一 个大型的项目拆分为N多个小模块,分别进行开发。而且拆分出的模块可以非常容易的被其他模块复用
常见的拆分方式有两种:
第一种:按照业务模块进行拆分,每个模块拆分成一个maven工程,例如将一个项目分为用户模块,订单模块,购物车模块等,每个模块对应就是一个maven工程
第二种:按照层进行拆分,例如持久层、业务层、表现层等,每个层对应就是一个maven工程
不管上面那种拆分方式,通常都会提供一个父工程,将一些公共的代码和配置提取到父工程中进行统一 管理和配置。
2、 maven工程的继承
在maven工程之间可以继承,子工程继承父工程后,就可以使用在父工程中引入的依赖。继承的目的是为了消除重复代码。
3、maven工程的聚合
在maven工程的pom.xml文件中可以使用标签将其他maven工程聚合到一起,聚合的目的是为了进行 统一操作。
加密算法MD5
一、什么是MD5
MD5加密全称是Message-Digest Algoorithm 5(信息-摘要算法),它对信息进行摘要采集,再通过一 定的位运算,最终获取加密后的MD5字符串。
二、MD5特点
- 针对不同长度待加密的数据、字符串等等,其都可以返回一个固定长度的MD5加密字符串。(通常 32位的16进制字符串);
- 其加密过程几乎不可逆,除非维护一个庞大的Key-Value数据库来进行碰撞破解,否则几乎无法解开。
- 运算简便,且可实现方式多样,通过一定的处理方式也可以避免碰撞算法的破解。(加盐:随机字符串)
- 对于一个固定的字符串。数字等等,MD5加密后的字符串是固定的,也就是说不管MD5加密多少 次,都是同样的结果。
1、MD5依赖
<!--MD5依赖-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.3</version>
</dependency>
Git
一、版本控制系统
软件版本控制系统的核心任务:查阅项目历史操作记录、实现协同开发。
常见的两种版本控制类型:
- 集中式版本控制工具
- 集中式版本控制工具,版本仓库是集中存放在中央服务器的,team里每个人工作时,从中央 服务器下载代码。每个人个人修改后,提交到中央版本仓库。提交(commit)代码需要联网
- 如:svn
- 分布式版本控制工具
- 分布式版本控制系统可以没有 “中央服务器”,每个人的电脑上都是一个完整的版本仓库,这 样工作的时候,不需要联网。因为版本仓库就在你自己的电脑上。多人协作只需要各自修改,开发完成即可,推送给对方【联网】,推送的时候是将整个版本仓库推过去。
- 如:git
二、git介绍
Git --- The stupid content tracker, 傻瓜内容跟踪器。Linus Torvalds 是这样介绍 Git 的
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目的版本管理。 Git 是 Linus Torvalds为了帮助管理 Linux 内核开发而开发的一个的版本控制软件。最后开源了。
- 速度、简单的设计
- 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
- 完全分布式
- 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
1、Git工作流程
操作:
- Clone:克隆,从远程仓库中克隆代码到本地仓库,第一次操作
- Push:推送,代码完成后,需要和团队成员共享代码时,将代码推送到远程仓库。
- Pull:拉取,从远程库拉代码到本地库,自动进行合并(merge),最后放到工作区
操作:
- checkout:将本地仓库的内容检出到工作区
- add:在提交前先将代码提交到暂存区
- commit:提交到本地仓库
2、基本概念
- 本地仓库: 在本地主机上的一个代码库,可以独立存在,也可以与远程仓库进行关联
- 工作区:对任何文件的修订(增删改),都先放在工作区,工作区不与任何仓库分支进行关联
- 暂存区:把修订的文件,从工作区经过add(添加)后与某一个仓库分支进行关联,只要进 入缓存区的文件才能commit(提交)到本地仓库。
- 远程仓库 : 在局域网或互联网上的一个主机,存放代码库的主机或平台,比如GitHub、 Gitee.com(码云)
- 分支:代码存放在仓库,默认是主分支(master),可以在主分支基础上创建很多子分支,比如 develop(开发)、bugfix(bug修复)等。
一个文件夹包含.git隐藏目录(Git工作目录),说明此文件目录使用Git版本管理。
.git隐藏目录中存储了很多配置信息、日志信息和文件版本信息、暂存区信息等。.Git文件夹中有很多文 件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方。
小结
Git分布式的版本控制系统
1、Git解决那些问题:代码备份、还原;协同开发;多版本同时开发、追溯问题代码
2、Git中的基本概念:
- 本地仓库:存储所有版本代码
- 工作区:编辑代码区
- 暂存区:准备提交的代码都放这里
- 远程仓库:用于团队之间共享代码【枢纽】
- 分支:多个版本同时开发,master主分支,develop开发分支,test测试分支
3、Git工作流程
远程仓库操作:
1. clone(克隆):第一次从远程仓库下载代码
2. pull(拉取):获取团队其他成员代码提交变动
3. push(推送):完成后的代码上传到远程仓库本地仓库操作:
1. checkout(检出):将本地仓库的内容检出到工作区
2. add(添加):向暂存区添加代码,准备提交
t工作流程远程仓库操作:
1. clone(克隆):第一次从远程仓库下载代码
2. pull(拉取):获取团队其他成员代码提交变动
3. push(推送):完成后的代码上传到远程仓库本地仓库操作:
1. checkout(检出):将本地仓库的内容检出到工作区
2. add(添加):向暂存区添加代码,准备提交
3. commit(提交):把暂存区的代码提交到本地仓库
maven、md5、git学习相关推荐
- Java面试11|Maven与Git
git的命令一定要掌握,如果学习可以参考:廖雪峰的官方网站 git学习:http://learngitbranching.js.org/?demo 1.Maven 生命周期及Maven多项目聚合与继承 ...
- GIT学习0基础到入门(附图)
GIT学习 1.git 常用命令代码 提交,或者修改代码到暂存区 git add 2.设置签名 git config user.name JackMa git config user.email 13 ...
- Git学习系列之Git基本操作提交项目(图文详解)
前面博客 Git学习系列之Git基本操作克隆项目(图文详解) 然后可以 cd 切换到 LispGentleIntro 目录, 新增或者修改某些文件.这里只是模拟一下操作, 实际情况可能是 使用 Ecl ...
- Git学习系列之Windows上安装Git之后的一些配置(图文详解)
不多说,直接上干货! 前面博客 Git学习系列之Windows上安装Git详细步骤(图文详解) 第一次使用Git时,需要对Git进行一些配置,以方便使用Git. 不过,这种配置工作只需要进行一次便可, ...
- Mac~git学习和应用需要注意的几个点
Git学习推荐网站:廖雪峰-Git教程 - 廖雪峰的官方网站,通俗易懂,简单粗暴,就是平俗的语言,好懂.粗暴的那种 git学习进阶-国外经典git学习网站:Git - Book 目录 1. 全局配置和 ...
- Git学习(一)git服务器的简易搭建
Git学习(一)git服务器的简易搭建 使用环境:docker容器模拟的3个ubuntu14.04的系统 分别模拟了3个系统: Ubuntu_gitserver:14.04 用于git服务器的安装 ...
- 面向任务的 Git 学习法
前言 对于 Git 学习而言,通常枯燥的理论学习并不能帮助我们快速掌握它的使用,需要我们结合实践,才能更好地学会利用 Git 进行多人协作开发.本文就以任务的形式,来介绍 Git 命令的使用,希望在进 ...
- Git学习记录 力做全网最强入门教程
目录 Git学习记录 力做全网最强入门教程 什么是GitHub? 什么是Git? Git的配置 Git的安装(只介绍windos操作系统下) Git的配置 至此我们的入门教程到此结束,更新中级教程要等 ...
- Git学习笔记与IntelliJ IDEA整合
2019独角兽企业重金招聘Python工程师标准>>> Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:htt ...
- 分布式版本控制系统Git学习资源收集汇总
伴随着知乎上一个问题:GitHub 是怎么火起来的?被顶起200+的回答说到:Github不是突然火起来的,在Ruby社区Github其实从一开始就很流行,我们2009年搞Ruby大会就邀请了Gith ...
最新文章
- jquery jQuery的入口函数 $函数 dom对象和jquery对象
- 干货|100张PPT讲透工业机器人的机械结构
- 客户合作伙伴关系问题
- linux无线网络密码修改,linux无线网络配置工具----iwconfig
- Centos Mysql数据还原
- Ubuntu 启动或停止django服务
- Lenet神经网络实现
- MySQL Root密码丢失解决方法总结
- 非双一流普通院校毕业,你凭什么斩获 BAT 的 Offer?
- window10设置文件夹备注
- tween.js的使用
- 导数的四则运算法则_胡昉祖《导数的概念》和《定积分》
- Java集合 HashSet 和 HashMap
- 微信公众号、微信号、微信文章爬虫(搜狗搜索)
- zz:Android 层次化安全架构
- windows下ntp时间校对
- [Contests]2016 ACM/ICPC Asia Regional Dalian Online(1006/7/8/9)
- 完全卸载Myeclipse
- 关于下一代防火墙的几个思考
- Onvif/RTSP流媒体安防RTSP无插件直播方案及RTSP配置规则
热门文章
- 涨薪申请多次被拒,去年我带的实习生,今年工资比我还高1K,当天就裸辞走了.....
- WatchGuard Firebox配置动态口令(OTP)认证
- (附源码)springboot电子病历管理APP 毕业设计 010350
- 解决安装office2016后文件图标显示空白图标
- u盘插电脑计算机卡了,电脑插入U盘就卡顿?3个原因你需要了解一下
- 嵌入式学习用什么编程语言
- 耳机电声测试仪软件,CLIO 11电声测试仪
- oracle 取系统当前年份_Oracle 之 获取当前日期及日期格式化
- MMA8451Q传感器读值
- windows下配置公私钥