管理源代码的工具
开发历史记录
SVN :集中式的源代码管理工具 通常必须连到公司的服务器上才能正常工作
(提交代码,查看代码的历史记录 查看代码的分支)
在公司中开发项目时 每天必须至少提交(Commit)一次代码。
第二天上班时 写代码之前 先获取最新(update)的源代码
如果出差到外地 则无法直接从公司内部的SVN服务器上获取代码,提交等
(此时VPN可能是一个解决方案)
总之必须连到SVN服务器上才能干活
GIT: 分布式的源代码管理工具,没有中心服务器的概念。
每个开发人员都可以获得完整的代码库。即使不连网 也能进行所有的操作
使用GIT 因为代码库在本地 所以可以很快的提交 不会受网速影响
提交的频率就可以大大的提高。代码的历史记录更加详细(当需要查看或恢复 到某一状态时 会更加准确灵活)
团队合作开发
源代码管理工具=》都能解决团队合作开发的问题
GIT/SVN都是网络程序 都是多用户的系统!
版本管理
在开发过程中 会同时并存在一个产品的多个”版本”
(下一代产品)开发版(分支)
新特性实验版(分支)
Bug修复版(分支)
正式发布版(分支)
不同的版本有自己的历史记录 有自己的研发团队(多人合作)
开源项目
使用GIT可以管理或参与开源项目 GIT本身就是为开源项目设计的
在互联网上有很多云代码管理库(云计算和源代码和管理的结合)
趋势:源代码管理将成为一种公共服务
国内:OSChina 码云(目前私有项目暂不收费 但是项目大小不能超过1G)
国际:Githob (对于私有项目收费)
软件开发能力
通过cmmi级别可以判断 一个公司的软件开发能力
CMMI 能力成熟度模型 一共定义了五个级别
级别越高 表明软件开发能力越强 越成熟
5级很难达到
3级以上意味着公司的管理非常规范
质量标准 ISO 2000 国际标准 规定了软件质量的形成和保证机制
无论是CMMI还是ISO 对于源代码管理 都有明确要求-----软件公司必须使用专业的工具管理代码资产
GIT命令
git init 初始化一个git仓库 会在当前文件夹中生成一个隐藏文件夹中
在这个隐藏文件夹中保存的是版本库的所有数据
git add 文件名/. 将已修改的文件放入暂存区
git commit -m 消息 将暂存区的文件提交到代码库
git log 查看提交记录 -- oneline (查看简化的记录(显示在一行))
git status 查看工作区的状态
(那些文件被修改/那些文件删除/那些文件没有进版本库)
git reset --hard 提交id的前几个字母
可以跳转到某一历史记录
所有的文件都会恢复到那时的状态
git reflog 查看所有commit和reset的记录
提交过程
工作区---add--->暂存区---commit---->分支(某个)---push--->远程git库
远程GIT库不是必须的
暂存区存在的目的是可以挑选一部分文件提交 而不是将整个文件全部提交
Maven
项目开发管理工具 它能够帮助开发者创建项目,
解决项目依赖关系,测试项目,打包项目,安装和部署项目
能够帮助开发者更加轻松的完成整个项目的开发过程
Maven 的安装
把maven安装包解压到某个位置
配置M2_HOME环境变量指向这个位置
在path环境变量中添加;%M2_HOME%in
配置镜像
国内的阿里云镜像比国外的中央仓库更快
方法:
在=当前用户文件夹中找到.m2 把settings.xml 放进去
如果没有.m2 可以在命令行中运行 mvn
如果没有settings.xml 从百度上搜maven镜像
与eclipse 结合
最新版本的eclipse 自带maven 插件 但版本比较低 也没有配置镜像
所以在window--->preference------>maven------>installation 中添加并选择我们自己安装和配置好的maven
使用maven 创建项目
New---->maven----->选中create simple ---->填写项目信息
Group id 组织、公司项目组中的名字
Artfact id 项目名字
版本号 snapshot 快照版 用来快速编写代码验证某个功能或需求
初次创建maven项目时 需要从中央仓库 下载jar包 和maven需要文件 等待下载完成即可
Pom 文件
每一个maven项目都有一个pom.xml文件 用来记录项目的基本信息
项目名称 描述 版本 maven坐标
项目依赖关系
项目使用的插件等
Maven项目的基本结构
src 源代码
main 项目主体代码
java Java代码
resource 项目使用资源 配置文件等
test 测试代码
java Java测试代码
resource 测试代码使用的资源和配置文件
target 编译之后生成文件
pom.xml 项目描述文件
Pom:project object model 项目对象模型
把一个项目当做一个对象
此时就需要这个对象定义很多属性
()
Maven依赖/坐标
Group id
Artfact id
Version
上面三个非常重要 尤其是版本号一定要注意 不同的版本api 可能不同 如果版本号错误则会找不带类 找不到方法等错误
Scope 作用域/指明这个依赖项的作用地址
Test 仅在测试时使用
Compile 参与到项目的编译、打包、部署等过程
Runtime 由jdk 或运行环境提供 不许打包
部署时需自行安装jdk或其他执行环境
Provided 已经提供的依赖项 不需打包
System 已经有系统提供
Maven通过查看pom.xml文件的<dependencies>
可以找到某个项目或者jar包的依赖项
找到之后可以通过中央仓库将至下载到本地仓库
然后会在新下载的pom文件
再去找其中的<dependencies> 找到之后继续下载
直到找到所有的依赖项全部下载到本地仓库中
Maven本地仓库
Maven回将jar包统一放在本地仓库中 在.m2 文件夹的repository中
按照goupid/artfectid/version/的方式保存这些jar包
本地仓库的作用是 每个jar包只需下载一次既可以被任意多的项目使用
避免重复下载
避免重复占用磁盘空间
有免除了程序员从官方网站查找和下载jar包的痛苦
JUnit
Java Unit Test 用于Java单元测试工具
单元测试是由程序员编写的用于测试自己的代码
使用单元测试的好处是
测试代码与项目主体代码是分离的
不用考虑删除的问题
可以反复多次使用 即便是项目上线之后依然可以用于后期的bug修复时使用
测试代码的反复使用可以节省大量时间
避免反复编写代码检查程序功能是否正常
单元测试是开发的一部分 是程序员的工作内容 而非测试人员的工作内容
测试驱动开发
与传统的先编码后测试不同 它的思想是先写测试用例 然后在编写代码
编写代码时 通过不断地运行测试 测试用例来推动编写 直到
创建测试类
测试类的包名应该等于被测试的包名 即在同一个包中 、
测试类的名字=被测试类的名字 Test
测试方法必须是public 的
测试方法的名字=test被测试方法的名字