最近对于代码编译、打包以及版本的管理有一些想法,虽然比较简单,也先记录下来,以后再逐步完善
1、项目参与的人比较多,大概是200个人一起开发,经常发生提交到SVN上的代码编译不通过的情况,浪费了很多时间。
分析了一下,大部分是由于以下2个原因:
第一种情况:开发人员本地机器上有代码A和代码B,但是代码A在SVN上已经是比较新的版本,删除了某个方法,然后开发人员在本地修改代码B,调用了这个在SVN上已经不存在的方法(但是在本地的代码A上还是有的)。然后本地开发环境当然是编译通过的,于是开发人员就提交了修改后的代码B,这样一来,SVN上的代码肯定就编译无法通过了,报NoSuchMethodException
第二种情况:开发人员在本地修改了很多代码,编译都通过了没有问题,但是提交的时候只提交了部分代码。这样SVN上的代码就不全了,也会造成编译无法通过,报ClassNotFound或者NoSuchMethod
要避免上述第一种情况,就要求开发人员在提交代码之前,先把本地的代码更新一下,这样如果本地编译通过再提交,就会比较少发生提交后SVN代码编译不通过的情况
针对第二种情况,就要求开发人员每次把修改的代码提交完整
2、关于打jar包
打jar包比较简单,通过eclipse的export --> jar的功能就可以,在打包的时候,可以选择具体要打包的代码,或者资源文件,以及依赖的其他jar包。比如一个普通的java工程,里面有一个lib目录,放了很多依赖的其他jar包。那在把这个工程打成jar包的时候,可以把lib目录也打出来,或者不打也是可以的,由自己选择,一般是不会打的
这里说个题外话,为什么有时候从svn上import了一个工程,发现无法编译(红叉叉),报缺少jar包呢。这时候要看一下工程对应的.classpath文件,里面可能是引用了user library,而user library是依赖eclipse的,并不像lib文件夹里的jar包那样,可以上传到svn上再下载下来。也就是说开发人员A机器上自己建了一个user library,开发人员B的机器上是不会自动有的
1、项目参与的人比较多,大概是200个人一起开发,经常发生提交到SVN上的代码编译不通过的情况,浪费了很多时间。
分析了一下,大部分是由于以下2个原因:
第一种情况:开发人员本地机器上有代码A和代码B,但是代码A在SVN上已经是比较新的版本,删除了某个方法,然后开发人员在本地修改代码B,调用了这个在SVN上已经不存在的方法(但是在本地的代码A上还是有的)。然后本地开发环境当然是编译通过的,于是开发人员就提交了修改后的代码B,这样一来,SVN上的代码肯定就编译无法通过了,报NoSuchMethodException
第二种情况:开发人员在本地修改了很多代码,编译都通过了没有问题,但是提交的时候只提交了部分代码。这样SVN上的代码就不全了,也会造成编译无法通过,报ClassNotFound或者NoSuchMethod
要避免上述第一种情况,就要求开发人员在提交代码之前,先把本地的代码更新一下,这样如果本地编译通过再提交,就会比较少发生提交后SVN代码编译不通过的情况
针对第二种情况,就要求开发人员每次把修改的代码提交完整
2、关于打jar包
打jar包比较简单,通过eclipse的export --> jar的功能就可以,在打包的时候,可以选择具体要打包的代码,或者资源文件,以及依赖的其他jar包。比如一个普通的java工程,里面有一个lib目录,放了很多依赖的其他jar包。那在把这个工程打成jar包的时候,可以把lib目录也打出来,或者不打也是可以的,由自己选择,一般是不会打的
这里说个题外话,为什么有时候从svn上import了一个工程,发现无法编译(红叉叉),报缺少jar包呢。这时候要看一下工程对应的.classpath文件,里面可能是引用了user library,而user library是依赖eclipse的,并不像lib文件夹里的jar包那样,可以上传到svn上再下载下来。也就是说开发人员A机器上自己建了一个user library,开发人员B的机器上是不会自动有的