maven和svn可以同时使用吗?

 我来答
tutu天然呆
高粉答主

2018-01-09 · 说的都是干货,快来关注
知道大有可为答主
回答量:239
采纳率:100%
帮助的人:7.8万
展开全部

回答:

目前项目组在开发一个项目,由多个子模块构成,构建工具是maven,版本控制工具是svn。本文想对如何结合使用maven和svn提出一点初步的想法 

一、只有svn的情况 

1、首先考虑没有maven的情况。这样的话,项目组每个开发人员,都需要在本地check out所有的源码。

2、每次提交之前,需要先更新周边工程的代码。由于工程之间是依赖的,所以很可能需要把所有的代码都更新一遍。在项目依赖混乱的情况下,就更麻烦 ,等于说,项目组成员之间的协作,是以SVN为中心的 

这种做法的缺点在于: 

1、开发人员本地需要有所有的代码,编译速度很慢 

2、如果是别人负责的模块出错,会影响自己的开发。如果项目比较大的话,别人负责的模块的问题,自己实际上是解决不了的

这种做法的优点在于: 

1、提交之前做一次全量更新,相当于在本地做了一次全量编译,提交到SVN上基本可以保证不会出现编译错误。我称之为“悲观提交”,类似于数据库里“悲观锁” 

2、由于本地有所有代码,所以本地构建比较不容易出错 

二、引入maven的情况 

1、maven的主要作用之一,就是对模块化开发的支持

2、开发人员A机器上可以只有工程A,开发人员B机器上只有工程B,其中工程B依赖工程A 

3、只要工程A已经deploy到了远程仓库(私服),那么工程B就可以在本地构建,不需要有工程A的代码。也就是说,每个开发人员本地,都只需要check out自己负责的工程

这种做法的优点在于: 

1、每个人只有自己负责的代码,本地构建的速度快 

2、如果其他的模块构建出错,对自己的模块不容易造成影响 

3、职责划分清晰 

这种做法的缺点是: 

1、高层模块的构建,依赖于低层的模块。由于开发人员B本地只有工程B的代码,如果工程A还没有deploy到远程仓库,则工程B就无法进行本地构建 

2、提交到SVN后,有可能造成SVN上的全量编译失败。比如A删除了一个方法,并提交到svn,但是没有deploy。那么B就会基于A模块旧的构件来进行本地构建,成功后也提交了代码。这样的话,在svn上编译就无法通过

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式