文档章节

svn、git、maven的区别

 隔三差五的小幸福
发布于 2017/07/25 09:44
字数 670
阅读 59
收藏 0

今天学习了svn、git、maven的区别和关联,总结一下:

  1. git和svn、cvs都是代码版本管理工具。maven用来版本控制、构建项目、(配合nexus)添加依赖。

  2. git和svn的区别:

     svn必须要有服务端,只有网络连上服务端才能提交和更新。传输数据时需要利用服务器搭建svn来共享。并且svn的服务端是单一的,一旦服务器损坏整个版本库的历史记录都会丢失,也没有办法回滚。

     每一台装了git的电脑都是服务端,各台电脑之间可以相互同步和推送,不需要网络就可以提交到本地的git库里。git每台电脑都是服务端,只要两台电脑做过同步,任何一台坏了,另一台还保有着所有的历史记录,仍然可以提交更新回滚,不怕代码历史丢失。

  3. maven最重要的功能就是管理项目之间的依赖关系,使用一个xml来维护。如果工程中需要哪个类型的jar包,只需要在maven的pom.xml中配置一下项目名称和版本号即可,maven就会自动从网上为你下载jar包并让你的工程依赖上,你的本地硬盘的仓库目录能看到你用过的所有第三方项目的jar包和源代码,再也不用去下载那些来路不明的jar包再扔到工程里了,也不用担心写同一个项目的两个人使用了不同版本的jar包,以至搞出莫名其妙的问题。

4. maven可以通过添加maven repository(Maven仓库)中的依赖,减少项目中的jar数量,并且大的项目中模块交叉引用也能够用它很好地解决。

  5. git做版本控制,无论是否使用maven都行。

  6. 两者配合的方式,通过.gitignore文件中添加jar、target目录,可以避免将这些二进制文件、自动生成的文件加入到版本库中,从而减小版本库的大小,缩短同步时间。其他人同步之后,只需要执行maven命令,就能够自动从repo里面下载依赖,按照依赖树自底而上构建内部交叉依赖。
简单来说,maven让git不需要同步不必要的第三方库和自动生成的class、jar文件,并可以额外同步项目jdk版本等项目设置,标准化构建流程;git只是一个CVS工具,换成SVN、Mercurial也都可以。

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 1
码字总数 670
作品 0
深圳
程序员
Maven自动部署(SCM-SVN/Git)(maven-scm-plugin/maven-release-plugin插件的使用)

以下内容引用自https://ayayui.gitbooks.io/tutorialspoint-maven/content/book/mavendeployment_automation.html: 注意:Maven自动构建和自动部署的区别在于,构建只是编译代码阶段,而部署...

easonjim
2017/05/15
0
0
关于对-话说Svn与Git的区别-中,对svn的申诉

今天看到一篇文章:“话说Svn与Git的区别”https://www.jianshu.com/p/bfec042349ca,通篇都是讲git如何好,svn就没有什么用的样子,对于经常使用svn的我,我想做一点svn的申诉: 1.svn也可以...

zdhsoft
03/07
0
0
从svn上检出威尼斯人网站开发多模块maven项目

一、SVN上Maven多威尼斯人网站开发模块项目结构 haozbbs.com Q1446595067 使用eclipse导入SVN上的Maven多模块项目 Maven多模块项目所在SVN目录 二、eclipse通过SVN导入到工作空间 工作空间位...

xmvn
07/09
0
0
super_empire/patch-generator-parent

patch-generator-parent 通用svn、git增量部署补丁生成器,可用于svn/git/getee管理的maven项目的增量部署文件生成,支持多模块父子项目. 该模块可以对git/svn管理的项目进行增量代码生成用于...

super_empire
04/20
0
0
通用 svn、git 增量部署补丁生成器 - patch-generator-parent

通用 svn、git 增量部署补丁生成器,可用于 svn/git/getee 管理的 maven 项目的增量部署文件生成,支持多模块父子项目。 总共包含四种生成方案: git 服务器分支提交分析; git 提交日志分析...

em_Aaron
04/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
6
0
现场看路演了!

HiBlock
昨天
16
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
10
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
19
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部