iThink icon indicating copy to clipboard operation
iThink copied to clipboard

hello buck.

Open hufeng opened this issue 9 years ago • 1 comments

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直奔主题。

image

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

touch .buckconfig

然后创建一个BUCK文件

image

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

image

因为官方文档中只有关于java_libray, 或者 java_binary的规则属性定义,并没有完整的例子,导致这个费了非常多的时间才试出来是这样写。

同时要注意,srcs的规则,一定是从当前的目录。

好的,我们开始build吧。通过buck的targets我们可以查询有哪些构建的目标,类似gradle的task image

通过

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

image

image

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

image

hufeng avatar May 17 '16 16:05 hufeng

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

zhangjin-007 avatar Nov 03 '16 09:11 zhangjin-007