- 我是一个线程(修订版)
- 我是一个 Java class
- Javascript:一个屌丝的逆袭
- Java : 一个帝国的诞生
- JSP 一个装配工的没落
- TCP/IP 之 大明王朝邮差
- TCP/IP 之大明内阁
- TCP/IP 之蓟辽督师
- CPU 阿甘
- CPU 阿甘之烦恼
- CPU 阿甘:函数调用的秘密
- 我是一个网卡
- 我是一个路由器
- 我是一个进程
- 我是一块硬盘(上)
- 我是一块硬盘(下)
- 我是一个键盘
- 张大胖的 socket
- 张大胖学递归
- 学习面向对象的令狐冲
- 张大胖学数据库
- 数据库村的旺财和小强
- 小李的数据库之旅(上)
- 小李的数据库之旅(下)
- 漫画:什么是机器学习?
- 那些烦人的同步和互斥问题
- IE 为什么把火狐和 Chrome 给打伤了?
- 对浏览器村的第二次采访
- 节约标兵 IE 的自述
- EMail 诞生记
- Email 诞生记(下)
- Http 历险记(上)
- Http 历险记(下)-- Struts 的秘密
- 动物王国的面向对象
- 冯·诺伊曼计算机的诞生
- Http Server : 一个差生的逆袭
- 张大胖的加法器
- 从 1 加到 100:一道简单的数学题挑战下你的大脑
- 编程语言
- Javascript:一个屌丝的逆袭
- 计算机语言之战
- 我和编程语言的爱恨情仇(上)
- 我和编程语言的爱恨情仇(下)
- Android 为什么选择了 Java
- iOS 为什么选择了 Object-C?
- Basic : 一个老兵的自述
- Node.js : 我只需要一个店小二
- 命令式编程 vs 声明式编程
- 编译还是解释?
- 程序人生
- “架构师"小赵
- 师兄说
- 师姐说
- 小王的架构师之路
- 小李的版本管理系统
- 小超穿越记
- 小李的 Build 之路(上)
- 小李的 Build 之路(下)
- 张大胖改 Bug
- 我的编程之路--大学趣事
- 码农小王的一天
- 小李在外企
- 张大胖的需求估算
- 从厨师到码农
- 聊一聊那些神一样的程序员们(上)
- 聊一聊那些神一样的程序员们(中)
- 聊一聊那些神一样的程序员们(下)
- 谁是互联网之父?
- 一个价值百万的创业教训
- 让自己与众不同 - 提升工作的价值
- 看看你的“易燃性”
- 从无聊的工作中寻找价值
- 什么样的学生适合报考计算机?
- 谈谈程序员的职业方向(上)
- 谈谈程序员的职业方向(中)
- 谈谈程序员的职业方向(下)
- 谈谈培训班的作用
- 码农需要知道的“潜规则”
- 学习编程的加速度
- 码农在工作中的必备能力
- 码农和英语
- 老司机经验
- 假如时光能够倒流, 我会这么学习 Java
- 假如我是计算机系老师
- 学会编程, 而不是学会 Java
- 从增删改查中突围
- 抽象:程序员必备的能力
- 懒就一个字
- 编程的自学方法
- 小王买房记
- 从一道面试题谈谈一线码农应该具备的基本素质
- 想写框架的看过来
- 苹果手机变砖头以后
- 如何快速的学习一门技术?
- 唯一不变的是变化: 谈谈微信应用号
- 什么是企业应用?
- 勿以浮沙筑高台
- 为什么敏捷开发难于成功?
- localhost vs 127.0.0.1
- GitHub/Stackoverflow 找工作时有什么用?
- 动词 or 名词 :这是一个问题
- 如何选择入行语言
- 有时候,沉默是金
- 零 Bug 的代码是怎么炼成的?
- 浮点数为什么不精确?
- 文章错误大全
- Open Source--不要为了开源而开源
- 一不留神,代码就腐化了
- 先做个“键盘侠”, 再来写程序
- 不加断点调试的程序员是好程序员
- 码农必备技能:烂代码的处理之道(上)
- 码农必备技能:烂代码的处理之道(下)
- 学习数据结构有用吗?
- 从现在开始,丰富你的简历
- 那些永不过时的书,你看过几本吗?
- 学好编程必备的一个品质你知道吗?
- 你最爱的 Java
- 搞懂了这几点,你就学会了 Web 编程
- Spring 的本质系列(1) -- 依赖注入
- Spring 本质系列(2)-AOP
- 三层架构和 MVC 那点事儿
- Java 帝国之拨云见日识回调
- 小张的 Duck Typing
- JDBC 的诞生
- JDBC 后传
- 一个不安分的 JDBC 驱动
- Java 帝国之 Java bean (上)
- Java 帝国之 Java bean(下)
- Java 帝国之函数式编程
- Java 帝国之函数式编程(下)
- 关于 Java 初学者需要知道的 10 件事
- JUnit 你不知道的那些事儿
- 圣诞礼物:Java EE 的历史
- Java EE 读书指南
- 给小白的 Java EE 指南
- 给小白的 Java EE 指南(2)
- 给小白的 Java EE 生存指南(3) : XML
- 给小白的 Java EE 生存指南(4) : 一只叫 Tom 的猫
- 给小白的 Java EE 指南(5) : AJAX
- 给小白的 Java EE 生存指南(6) :Java 反射
- 闲聊
- "饿了么"初体验
- 来自大脑的控诉
- 一个高中生是怎么玩自媒体的?
- 尝试 分答
- 到底应不应该上培训班?
- 自学编程中遇到问题怎么办?
- 据说 99%的初级程序员看完后都不迷茫了
- 一行代码引发的“血案”
- 对一个死锁问题的思考
- 通过外包进入名企
- 请开往十年前的今天
- 为什么自学中最好有个师傅指导一下?
- 这个网站值得你花时间投入
- 为什么你无法坚持自学编程?
小李的 Build 之路(上)
手工 Build 的烦恼 要不是为了和女朋友留在一个城市,小李肯定去北上广奋斗去了。
现在他只能留在这个 2.5 线城市,进入这家软件开发公司,7,8 个人,10 来条枪,是个典型的软件小作坊。
上班第一天,CTO 兼架构师兼项目经理兼开发组长老张把小李叫去,谆谆教导说:
“小李啊,我看了你的简历,我对你在公司的发展还是挺看好的,不过作为新人,你对新业务还不熟悉,没法开发核心系统,这段时间,你要一边学习,一边帮着项目做个很重要的工作:Build“
小李心说你还给我拽英语啊, 虽然心里这么想, 小李还是不动声色,面带微笑的问:
“这 Build 是什么东西?”
老张说:“我非常忙, 没时间给你解释,这儿有个文档,你看看就知道了”
说着,老张甩给了他几张纸 ,补充到: “有问题问小王, 他比你早来一个月,做 Build 已经很熟了”
小李仔细看了一遍,上面写着:
XXX 公司 Build 流程 (测试环境) (1) 设置 Eclipse 工作区, 编码为 UTF-8, java 编译级别为 JDK 1.7
(2) 从 SVN 下载最新源代码到 Eclipse 工作区
(3) 确保 Eclispe 工作区没有编译错误
(4) 手工修改下面 20 个 配置文件 database.properties cache.properties user.properties 。。。。。。 (5) 把 Eclipse 中的 Web 项目导出成 War 包 小王还特别在这里用红色的笔加了标注: Web 项目所依赖的其他 java 项目也会被自动包含到 War 包的 WEB-INF/lib 目录下
(6) 上传到测试服务器,安装
(7) 做冒烟测试
小李笑了:这不就是一个编译,打包,部署,测试的流程吗? 还 Build !
正在这时,开发骨干小梁叫小李了:“小李, 我改了几个 Bug,马上要测试,赶紧给我做一个测试环境的 Build”
小李不敢怠慢,立刻按照文档做了一遍,花了将近半个小时才折腾完。
可是到了最后一步,做冒烟测试的时候, 系统却启动不了了 !
小李查了好久才发现,原来测试环境的 JDK 是 1.6 , 但是 Build 文档上写的是 1.7 当然跑不起来了。
小李暗暗的骂前任小王: 你小子肯定知道这里有个坑, 怎么不在文档上标注出来?
赶紧做个新的 Build 放到测试环境, 这次冒烟测试顺利通过了。
刚松了口气, 测试小赵就叫了起来: “小梁, 你那个 Bug 没有修复啊”
开发骨干小梁本能的反应到: “这不可能! 我的代码本地都测试过了, 代码也提交了“
小梁接着把矛头就指向小李: “哎对了小李,你的 Build 是不是又搞错了。”
小李心头一惊 , 赶紧去查,果然,在第 4 步,手工修改配置文件的时候把数据库改错了 ,指向了开发库,而不是测试库。
赶紧改吧, 原来做 Build 的小王也跑过来凑热闹, 在前 Build 专员小王,开发小梁和测试小赵三双眼睛的严厉注目下, 小李头上都要冒汗了。
还好,第三次终于成功了。 所有的测试都顺利通过。
(实际上,小李在紧张的忙碌中也忘了去更新那个文档,把 JDK 改成 1.6)
就这样过了一周, 小李每天都得战战兢兢的做四五个 Build, 虽然做的越来越熟,出错越来越少, 但是每天还是占用了不少时间。
大好年华就要在 Build 中蹉跎了吗, 坚决不行。 自动化 Build 小李决定把这个手工的、费事的、容易出错的 Build 给自动化起来, 将来谁要是做测试环境的 Build,只要运行一个命令即可。
用什么语言来实现呢? 当然是 Java 大法好 ! 小李在大学修炼了那么久,自认为对 OO,设计模式已经炉火纯青了, 现在终于有了用武之地。
小李白天工作, 晚上回到住处就开发这个自动化的 Build, 每天干到 12 点才罢休。
但是小李不觉得累, 每天都恋恋不舍的去上床睡觉, 因为创造一个新工具,造福大家的想法一直激励着自己,有时候甚至觉得很快乐。
一个月后, 自动化工具新鲜出炉, 这其实是一套 Java 的 API, 小李把它称为 BuildTool V1.0 专门用于下载源码,编译,打包,部署,测试。 例如,如果你想编译 java 代码, 可以这么写: 果然是清爽多了! 和原来的 Java 程序比起来, 这段 XML 几乎就是自解释的 !
XML 可扩展性极强, 可以任意自定义标签诸如<javac> <srcDir> <classpath> 用它来描述 Build 的逻辑。
但是唯一不爽的地方就是: XML 无法像 Java 程序那样运行, 只是纯文本而已。
不过这也无妨,只要用 Java 写一个解析器,用来解析这些 XML 文件然后在 Java 中执行就可以了。有了 BuildTool V1.0 作为基础, 写一个解析器不是什么难事, 很快 BuildTool V2.0 就新鲜出炉了。
小李不再帮其他项目组去写 Build 程序,因为用 XML 描述以后,大家很快就能学会,并且乐在其中。 CTO 老张看到这个工具,大为赞赏, 它给小李说: “别叫什么 Build Tool, 太俗, 别人听了一点感觉都没有, 我给你起个名,叫 ANT ”
"ANT? " 小李似乎看到很多小蚂蚁在不辞劳苦帮着做 Build, 心里暗暗佩服老张: 这个名字起的太好了, 姜还是老的辣啊。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论