2017-06-23 Gogradle荣获Gradle 2017年度插件奖, 请参阅在Gradle Summit 2017上的演讲.
2017-12-17 现在Gogradle可以在不做任何额外设置的情况下构建Github's top 1000中的817个!
2017-03-20 现在Gogradle已经能够生成HTML格式的测试/覆盖率报告了!
Gogradle是一个为Go语言提供现代构建支持的Gradle插件。Gogradle深受glide启发(这里需要向它致以崇高的敬意),可以简单地理解为glide
+make
。
make
的学习曲线陡峭,许多人(比如我)并不擅长;Gradle使用语法接近Java的DSL来完成构建工作,更加容易使用Makefile
和Shell跨平台能力差,尤其对Windows用户不友好,而受益于Gradle和JVM,Gogradle提供了无与伦比的跨平台支持,并且有成熟的Java生态系统支持- Gradle生态系统拥有很多成熟的插件,你也可以方便的实现自己的插件,以复用构建的相关代码
- Gogradle支持项目级的
GOPATH
,你可以自己决定使用全局GOPATH
还是项目级别的GOPATH
- Gogradle支持多Go版本共存和切换
- 社区的各种依赖管理工具众多,且互不兼容
- Gogradle提供了导入命令,从而使你能够方便地从其他工具迁移到Gogradle
- Gogradle兼容
glide/glock/godep/gom/gopm/govendor/gvt/gbvendor/trash/gpm
工具。在查找一个依赖包的传递性依赖时,它能够自动识别工具的锁定文件
- Gogradle会长期维护
Gogradle实现了glide
的绝大部分功能,并添加了一些额外的功能特性:
- 测试和覆盖率报告生成
- Go的多版本管理
- IDE支持
- 使用动态语言特性完成仓库的声明和替换——即镜像仓库
如果你曾被上述问题之一困扰,又或者你曾是Java开发者、熟悉Gradle,那么Gogradle是你不二的选择!
Gogradle的目标不是取代其他的工具,而是为开发者提供一个额外的选项。
Gogradle不是一个玩具,它的代码中有52%是测试。此外,我们还使用Github's top 1000 Go repositories 进行真实环境下的测试。
- 除
JDK 8+
外无需预先安装任何东西(包括Go本身),若使用JetBrains系IDE可无需安装JDK - 支持Go 1.5+且允许多版本共存
- 完美支持几乎所有平台(只要能够运行
Java
,本项目的所有测试在OS X 10.11/Ubuntu 12.04/Windows 7上通过) - 项目级的依赖隔离,无需设置
GOPATH
- 完善的包管理
- 支持构建、测试、单个/通配符测试、交叉编译
- 现代的、生产级别的自动化构建支持,添加自定义任务极其简单
- 原生的Gradle语法
- 额外为中国大陆开发者提供的特性,你懂的
- Shadowsocks支持
- IDE支持
- 测试和覆盖率报告生成
- 增量构建
Gogradle基于vendor机制,你通过在build.gradle
中使用Gradle的DSL来声明依赖和构建逻辑。
Gogradle会按照声明进行依赖包和传递性依赖包的解析,并解决冲突,然后安装到vendor
目录中,最后执行构建。在这个过程中,依赖会被扁平化以避免可能出现的问题。稍后,你可以将解析后的依赖锁定,以实现可复现的构建。vendor
目录是否提交到代码仓库中由你自己决定。
Gogradle支持项目级的GOPATH
。在构建一个项目时,你可将其clone到任何地方。如果你的项目不在GOPATH
下的相应位置,Gogradle会在项目目录下创建一个符号链接,然后在构建中使用这个符号链接作为GOPATH
——在很多场景下,这是很有用的。
猛戳这里查看Gogradle的示例。
测试报告截图
覆盖率报告截图
有任何问题,可以加入QQ群Gogradle交流群:
若觉得不错,请Star。
有问题和需求请直接提issue。
欲和我一起改进Gogradle,请提交PR。
我们推荐在IntelliJ IDEA中开发Gogradle,你可以运行./gradlew idea
然后在IDEA中打开生成的.ipr
文件。
请通过./gradlew check
确保所有检查通过。