Bo's Blog

原谅我这一生不羁放纵爱自由

Java包管理的那些事——Maven与Ivy

前几篇文章我们提到了,JVM和JVM的包管理机制相当简单: JVM一辈子只干一件事,读字节码文件,执行字节码。 每当JVM看到一个全限定类名,就尝试从classpath中加载。 只要你铭记这两个原则,一切的问题就都能迎刃而解。 只是,你要如何把JVM所需的字节码完整、正确地塞到classpath中呢? 完整——意思是说,任何时候,JVM都不会哭丧着脸说,咋办哥,有个类我找...

写一个正确的状态机有多难

JDK 9+ Argument File bug一则

最近给JDK修了一个存在3年的bug。故事的起因是这样的,我们的一个测试在Windows下会莫名其妙地卡住,但是如果稍微把项目文件夹改个名字,增加或者减少一个字符(比如说从gradle改成gradle1或者gradl),这个测试就如丝般顺滑。 俗话说,能重现的bug都是好bug。一番调试之后,发现问题似乎出在JDK本身。 故事要从Argument File说起,这玩意的中文名是啥我也不知...

Gradle与旅行

入职8个月后,我终于第一次来到了办公室。 Gradle柏林办公室的常驻同事只有3个人,听说我要过去,十分激动。这种感觉就好像,你在玩一个网游,你所在的服务器只有3个玩家,你日复一日地和另外两个玩家打怪打了好几年——突然有一天,一个新玩家登录了你所在的服务器,你说你激动不激动? Gradle的柏林办公室 Gradle是一家很小的公司——我在阿里的工号是七万多,我离开阿里的时候工号已经...

「译」Gradle Enterprise教程 - 整个团队中的洞察与合作

Gradle Enterprise Tutorials - Insights and collaboration for your whole team

本文是Gradle Enterprise官方教程之一的译文。 原文地址:https://docs.gradle.com/enterprise/tutorials/debug/ 查看全部译文:Gradle Enterprise教程 软件开发是一场团队运动,Gradle Enterprise可以令分享和协作更容易。这使得开发者能够突破自我,开发团队能够积极参与解决问题、交付服务,从而节...

「译」Gradle Enterprise教程 - 减少构建失败并提高构建稳定性

Gradle Enterprise Tutorials - Reduce build failures and increase build reliability

本文是Gradle Enterprise官方教程之一的译文。 原文地址:https://docs.gradle.com/enterprise/tutorials/build-reliability/ 查看全部译文:Gradle Enterprise教程 网络异常、构建脚本有误、各种环境因素都会使你的构建莫名其妙地失败,且难以重现,最终拖慢甚至阻碍你的应用部署生产线applicati...

「译」Gradle Enterprise教程 - 让构建快如闪电

Gradle Enterprise Tutorials - Keeping builds fast

本文是Gradle Enterprise官方教程之一的译文。 原文地址:https://docs.gradle.com/enterprise/tutorials/performance-build-scans/ 查看全部译文:Gradle Enterprise教程 优化构建性能需要长期的努力,不能一蹴而就。Gradle Enterprise所做的一切努力都是为了让你在代码和环境改变...

「译」Gradle Enterprise教程 - 启用缓存以加速构建

Gradle Enterprise Tutorials - Caching for faster builds

本文是Gradle Enterprise官方教程之一的译文。 原文地址:https://docs.gradle.com/enterprise/tutorials/caching 查看全部译文:Gradle Enterprise教程 Gradle Enterprise的构建缓存build cache可以使构建更快——无论是对开发者还是持续集成服务器(CI)而言。 阅读本教程需要 ...

JUnit 5 Unroll Extension for Kotlin

JUnit 5 Unroll 扩展

二月份的时候一直在开发Gradle的JUnit 5支持,最终赶上了Gradle 4.6的发布。虽然还有一些issue,但看上去Gradle 4.6对JUnit 5的集成还是非常稳定的。 JUnit 5最大的特点就是扩展系统(Extension)。在JUnit 4时代,自定义JUnit行为的方法是Runner系统,然鹅,每个测试类只能定义一个Runner,多了不行。这就好像,你入了我的党,就...

Kotlin初体验

其实早在2017年初就知道Kotlin了,只不过一直没研究过。那个时候Google IO还没开,Kotlin和Android还处于地下恋情阶段。Kotlin的主页上有一行大字: 100% interoperable with Java 然而那并没有什么卵用,没有人会去注意它,毕竟这个世界上的语言多如牛毛。哪怕是写下这篇文章的2018年3月,Kotlin也只能勉强挤进编程语言排行榜...

使用Gradle构建Go语言项目

使用Gradle构建Go语言项目 厌倦了全局GOPATH,觉得Makefile太难写,想要Java那样完整的IDE支持?来试试Gogradle吧。 本文的目标读者是Go语言开发者,部分链接需要翻墙访问。 Gogradle是什么 Gogradle是Gradle的一个插件。Gradle是现代构建(build)工具,类似于GNU Make。它允许用户以DSL(Domain Specific...