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学习相关推荐

  1. Java面试11|Maven与Git

    git的命令一定要掌握,如果学习可以参考:廖雪峰的官方网站 git学习:http://learngitbranching.js.org/?demo 1.Maven 生命周期及Maven多项目聚合与继承 ...

  2. GIT学习0基础到入门(附图)

    GIT学习 1.git 常用命令代码 提交,或者修改代码到暂存区 git add 2.设置签名 git config user.name JackMa git config user.email 13 ...

  3. Git学习系列之Git基本操作提交项目(图文详解)

    前面博客 Git学习系列之Git基本操作克隆项目(图文详解) 然后可以 cd 切换到 LispGentleIntro 目录, 新增或者修改某些文件.这里只是模拟一下操作, 实际情况可能是 使用 Ecl ...

  4. Git学习系列之Windows上安装Git之后的一些配置(图文详解)

    不多说,直接上干货! 前面博客 Git学习系列之Windows上安装Git详细步骤(图文详解) 第一次使用Git时,需要对Git进行一些配置,以方便使用Git. 不过,这种配置工作只需要进行一次便可, ...

  5. Mac~git学习和应用需要注意的几个点

    Git学习推荐网站:廖雪峰-Git教程 - 廖雪峰的官方网站,通俗易懂,简单粗暴,就是平俗的语言,好懂.粗暴的那种 git学习进阶-国外经典git学习网站:Git - Book 目录 1. 全局配置和 ...

  6. Git学习(一)git服务器的简易搭建

    Git学习(一)git服务器的简易搭建 使用环境:docker容器模拟的3个ubuntu14.04的系统 分别模拟了3个系统: Ubuntu_gitserver:14.04  用于git服务器的安装 ...

  7. 面向任务的 Git 学习法

    前言 对于 Git 学习而言,通常枯燥的理论学习并不能帮助我们快速掌握它的使用,需要我们结合实践,才能更好地学会利用 Git 进行多人协作开发.本文就以任务的形式,来介绍 Git 命令的使用,希望在进 ...

  8. Git学习记录 力做全网最强入门教程

    目录 Git学习记录 力做全网最强入门教程 什么是GitHub? 什么是Git? Git的配置 Git的安装(只介绍windos操作系统下) Git的配置 至此我们的入门教程到此结束,更新中级教程要等 ...

  9. ​​​​​​​Git学习笔记与IntelliJ IDEA整合

    2019独角兽企业重金招聘Python工程师标准>>> Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:htt ...

  10. 分布式版本控制系统Git学习资源收集汇总

    伴随着知乎上一个问题:GitHub 是怎么火起来的?被顶起200+的回答说到:Github不是突然火起来的,在Ruby社区Github其实从一开始就很流行,我们2009年搞Ruby大会就邀请了Gith ...

最新文章

  1. jquery jQuery的入口函数 $函数 dom对象和jquery对象
  2. 干货|100张PPT讲透工业机器人的机械结构
  3. 客户合作伙伴关系问题
  4. linux无线网络密码修改,linux无线网络配置工具----iwconfig
  5. Centos Mysql数据还原
  6. Ubuntu 启动或停止django服务
  7. Lenet神经网络实现
  8. MySQL Root密码丢失解决方法总结
  9. 非双一流普通院校毕业,你凭什么斩获 BAT 的 Offer?
  10. window10设置文件夹备注
  11. tween.js的使用
  12. 导数的四则运算法则_胡昉祖《导数的概念》和《定积分》
  13. Java集合 HashSet 和 HashMap
  14. 微信公众号、微信号、微信文章爬虫(搜狗搜索)
  15. zz:Android 层次化安全架构
  16. windows下ntp时间校对
  17. [Contests]2016 ACM/ICPC Asia Regional Dalian Online(1006/7/8/9)
  18. 完全卸载Myeclipse
  19. 关于下一代防火墙的几个思考
  20. Onvif/RTSP流媒体安防RTSP无插件直播方案及RTSP配置规则

热门文章

  1. 涨薪申请多次被拒,去年我带的实习生,今年工资比我还高1K,当天就裸辞走了.....
  2. WatchGuard Firebox配置动态口令(OTP)认证
  3. (附源码)springboot电子病历管理APP 毕业设计 010350
  4. 解决安装office2016后文件图标显示空白图标
  5. u盘插电脑计算机卡了,电脑插入U盘就卡顿?3个原因你需要了解一下
  6. 嵌入式学习用什么编程语言
  7. 耳机电声测试仪软件,CLIO 11电声测试仪
  8. oracle 取系统当前年份_Oracle 之 获取当前日期及日期格式化
  9. MMA8451Q传感器读值
  10. windows下配置公私钥