All Projects → gogradle → Gogradle

gogradle / Gogradle

Licence: apache-2.0
A Gradle Plugin Providing Full Support for Go

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects
groovy
2714 projects

Projects that are alternatives of or similar to Gogradle

kotlin-plugin-generated
A Kotlin compiler plugin that annotates Kotlin-generated methods for improved coverage reports
Stars: ✭ 33 (-95.37%)
Mutual labels:  coverage, test, gradle-plugin, build-tool
Gradle Test Logger Plugin
A Gradle plugin for printing beautiful logs on the console while running tests
Stars: ✭ 460 (-35.39%)
Mutual labels:  gradle, gradle-plugin, test
Javafx Gradle Plugin
Gradle plugin for JavaFX
Stars: ✭ 425 (-40.31%)
Mutual labels:  gradle, build-tool, gradle-plugin
Cargo Make
Rust task runner and build tool.
Stars: ✭ 895 (+25.7%)
Mutual labels:  build-tool, build, coverage
Forma
Meta build system with Android and Gradle support.
Stars: ✭ 127 (-82.16%)
Mutual labels:  gradle, gradle-plugin, build
RocketXPlugin
🔥🔥 android 端编译加速插件🚀 自动识别未改动 module 并在编译流程中替换为 aar ,只编译改动模块,加速 Android apk 的编译速度。
Stars: ✭ 408 (-42.7%)
Mutual labels:  build, gradle, gradle-plugin
Go Plus
An Enhanced Go Experience For The Atom Editor
Stars: ✭ 1,519 (+113.34%)
Mutual labels:  build, ide, test
Gradle Testsets Plugin
A plugin for the Gradle build system that allows specifying test sets (like integration or acceptance tests).
Stars: ✭ 182 (-74.44%)
Mutual labels:  gradle, gradle-plugin, test
Gradle Pitest Plugin
Gradle plugin for PIT Mutation Testing
Stars: ✭ 144 (-79.78%)
Mutual labels:  gradle, gradle-plugin, coverage
goverreport
Command line tool for coverage reporting and validation
Stars: ✭ 44 (-93.82%)
Mutual labels:  coverage, test, coverage-report
change-tracker-plugin
A Gradle plugin to help analyse the dependency between modules and run tasks only on modules impacted by specific set of changes.
Stars: ✭ 103 (-85.53%)
Mutual labels:  gradle, test, gradle-plugin
Bnd
Bnd/Bndtools. Tooling to build OSGi bundles including Eclipse, Maven, and Gradle plugins.
Stars: ✭ 446 (-37.36%)
Mutual labels:  gradle, gradle-plugin
Simplecov
Code coverage for Ruby with a powerful configuration library and automatic merging of coverage across test suites
Stars: ✭ 4,362 (+512.64%)
Mutual labels:  coverage, coverage-report
Gradle Static Analysis Plugin
Easy setup of static analysis tools for Android and Java projects.
Stars: ✭ 398 (-44.1%)
Mutual labels:  gradle, gradle-plugin
Xcov
Nice code coverage reporting without hassle
Stars: ✭ 467 (-34.41%)
Mutual labels:  coverage, coverage-report
Platformio Atom Ide
PlatformIO IDE for Atom: The next generation integrated development environment for IoT
Stars: ✭ 475 (-33.29%)
Mutual labels:  build, ide
Gcovr
generate code coverage reports with gcc/gcov
Stars: ✭ 482 (-32.3%)
Mutual labels:  coverage, coverage-report
Gradle In Action Source
Source code for the Manning book "Gradle in Action"
Stars: ✭ 483 (-32.16%)
Mutual labels:  gradle, build-tool
Fury
A new build tool for JVM languages
Stars: ✭ 384 (-46.07%)
Mutual labels:  build-tool, build
Gradle Download Task
Adds a download task to Gradle that displays progress information
Stars: ✭ 478 (-32.87%)
Mutual labels:  gradle, gradle-plugin

Gogradle - a Full-featured Build Tool for Golang

中文文档

gogradle Coverage Status Java 8+ Apache License 2

Gogradle is a gradle plugin which provides support for building golang.

2017-06-23 Gogradle is awarded Gradle Plugin of the Year 2017. See the talk on Gradle Summit 2017.

2017-12-17 Now Gogradle can build 817 of Github's top 1000 Go repositories WITHOUT any extra configuration!

2017-03-20 Now Gogradle can generate HTML reports for test and coverage!

What is Gogradle?

Gogradle is a Gradle plugin which provide modern build support for Golang. Gogradle is deeply inspired by glide(I need to pay respect for it). You can simply think Gogradle as glide+make.

Why Gogradle?

  • make has a very steep learning curve, thus many people (like me) aren't good at it; Gradle use a DSL with similar syntax to Java to describe a build, which is easier for me.
  • Makefile and Shell have cross-platform issues, especially on Windows. Thanks to Gradle and JVM, Gogradle provide an excellent cross-platform support and can leverage the whole Java ecosystem
  • There're many mature plugins in Gradle ecosystem, and it's easy for yourself to implement a plugin to reuse your build code
  • Gogradle supports project-scoped GOPATH, if you prefer
  • Gogradle supports existence and switch of multi-version of Go
  • There's plenty of package management tools in Go community which are not compatible with each other.
    • Gogradle provides a migration command which enables you to migrate from other tools.
    • Gogradle is compatible with glide/glock/godep/gom/gopm/govendor/gvt/gbvendor/trash/gpm. When retrieving a dependency package's transitive dependencies, it can recognized lock files of these tools.
  • Gogradle has a long-term and active development support

Gogradle implements most features of glide and adds some extra features:

  • Test and coverage reports generation
  • Multi-version management of Go
  • IDE support
  • Declaration and substitution of repositories, which can be used as mirror repositories

If you puzzled over these issues, or you were a Java developer and familiar with Gradle, Gogradle is your choice!

Gogradle's objective is not replacing other tools, it only provides an option for developers.

Gogradle is NOT a toy. 52% of its code are tests to assure its quality. We also tested Github's top 1000 Go repositories as real world scenarios.

Feature

  • No need to preinstall anything but JDK 8+ (including golang itself)
    • If you're using JetBrains IDE, then JDK is not required
  • Supports Go 1.5+ and allow their existence at the same time
  • Perfect cross-platform support (as long as Java can be run, all tests have passed on OS X 10.11/Ubuntu 12.04/Windows 7)
  • Project-scope build, needless to set GOPATH
  • Full-featured package management
    • Needless to install dependency packages manually, all you need to do is specifying the version
    • VCS supported: Git/Mercurial
    • Transitive dependency management
    • Resolves package conflict automatically
    • Supports dependency lock
    • Supports importing dependencies managed by various external tools such as glide/glock/godep/gom/gopm/govendor/gvt/gbvendor/trash/gpm (Based on this report)
    • Supports submodule
    • Supports SemVersion
    • Supports vendor
    • Supports flattening dependencies (Inspired by glide)
    • Supports renaming local packages
    • Supports private repository
    • Support automatic repository url substitution
    • build/test dependencies are managed separately
    • Supports dependency tree visualization
    • Supports sub packages
  • Supports build/test/single-test/wildcard-test/cross-compile
  • Modern production-grade support for automatic build, simple to define customized tasks
  • Native syntax of gradle
  • Additional features for users in mainland China who are behind the GFW
  • Supports shadowsocks proxy
  • IDE support
  • Test and coverage report generation
  • Incremental build

How Gogradle works

Gogradle's work is based on vendor mechanism. You declare your build dependencies and build logic with Gradle DSL in build.gradle, and Gogradle will resolve all dependencies and potential package conflict, then install them into vendor directory and execute a build. In this course, dependency packages will be flattened to avoid issues. Later, you can lock your resolved dependencies to ensure a reproducible build. It's up to you whether to check in vendor directory or not.

See here for examples.

Table of Content

Snapshot

Test report

1 1 1 1

Coverage report

1 1

Contributing

If you like Gogradle, star it please.

Please feel free to submit an issue.

Fork and PR are always welcomed.

Contributor Guide

Gogradle is developed in IntelliJ IDEA. You can run ./gradlew idea and open the generated .ipr files in IDEA.

Please make sure all checks passed via ./gradlew check.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].