hello buck.
Hello Buck
"Houston, we've had a problem here"
无数个日日夜夜的coding中,每当想去打一个java的jar或者跑一个单元测试,哪怕是仅仅是改变了一点点的代码,都会在Maven或者Gradle的漫长build的过程中受尽折磨,心疼我的mac风扇,心疼全球变暖。
我们已经进入了21世纪,从make一路走到了maven, gradle 难道就没用更好的解决方案吗?
//TODO 有时间详细补充我们需要什么样的打包工具
我相信我们不是第一个吃螃蟹的人,放眼业界,我们看到了Facebook的buck。知道buck的原因是,react-native已经在切buck。+10000 👍
Buck是个好东西
Buck是个好东西,但是官方的文档,就差没有直接看API了,而且不是按照循序渐进的方式在写。Maybe这就是传说中的Hack文化,要求想去学习他的人,有Hack得能力(自我安慰)。但是学到了真是收获满满。
官方没有一个很好的getting started,导致探索了很长时间连一个基本的比如构建一个java的project都没有build出来,在不断的探索尝试,看了很多单元测试之后有点感觉了,So终于可以pass build了。那就先记录下,怎么入门吧。
install
brew update
brew tap facebook/fb
brew install buck
#如果想安装最新版本
brew install --HEAD buck
对了顺便说句,buck是用Java写的,是不是会招惹一堆Java黑。。。
最简单的java项目
最简单的java项目,那就是main方法输出hello world直奔主题。

马上开始buck的历程,首先我们要创建一个.buckconfig文件在当前的目录
touch .buckconfig
然后创建一个BUCK文件

ok, 就是这么简单,这个事情就算完成大半了。下一步定义打包的规则。

因为官方文档中只有关于java_libray, 或者 java_binary的规则属性定义,并没有完整的例子,导致这个费了非常多的时间才试出来是这样写。
同时要注意,srcs的规则,一定是从当前的目录。
好的,我们开始build吧。通过buck的targets我们可以查询有哪些构建的目标,类似gradle的task

通过
#我们就可以构建一个可以运行的jar
buck build //:app


//TODO 要休息了,今天先到这。。。后面来看多模块的buck构建

段子手 “都会在Maven或者Gradle的漫长build的过程中受尽折磨,心疼我的mac风扇,心疼全球变暖”