{"id":18015248,"url":"https://github.com/innobead/gogradle","last_synced_at":"2025-03-26T18:31:06.948Z","repository":{"id":113766458,"uuid":"146837567","full_name":"innobead/gogradle","owner":"innobead","description":"A Golang plugin for building, testing, dependency management and popular frameworks (gRPC, Gin, Swagger, ...) supported","archived":true,"fork":false,"pushed_at":"2019-06-28T11:29:31.000Z","size":159,"stargazers_count":5,"open_issues_count":2,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-15T22:23:43.461Z","etag":null,"topics":["gin","go","golang","gradle","grpc","grpc-gateway","kotlin","swagger"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/innobead.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-31T03:33:35.000Z","updated_at":"2023-12-12T10:31:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"5f575f0b-a936-4fab-894d-2af4e8747841","html_url":"https://github.com/innobead/gogradle","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/innobead%2Fgogradle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/innobead%2Fgogradle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/innobead%2Fgogradle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/innobead%2Fgogradle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/innobead","download_url":"https://codeload.github.com/innobead/gogradle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245712593,"owners_count":20660265,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gin","go","golang","gradle","grpc","grpc-gateway","kotlin","swagger"],"created_at":"2024-10-30T04:13:15.438Z","updated_at":"2025-03-26T18:31:06.938Z","avatar_url":"https://github.com/innobead.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CircleCI](https://circleci.com/gh/innobead/gogradle.svg?style=svg)](https://circleci.com/gh/innobead/gogradle)\n\n**Note:** Before using this plugin, please note that there is no test coverage right now, but it will be done in near future.\n\n# What is gogradle\nA Gradle plugin supports Go module/package build lifecycle, also integrate [go modules](https://github.com/golang/go/wiki/Modules) started from Go 1.11 for dependency management.\n\n# Installation\nhttps://plugins.gradle.org/plugin/com.pivotstir.gogradle\n\n```\nplugins {\n  id \"com.pivotstir.gogradle\" version \"1.1.3\"\n}\n```\n\n# Tasks\n```\nGogradle tasks\n--------------\ngoBuild - Build Go project\ngoClean - Clean Go project\ngoDep - Resolve Go project library and 3rd party tool dependencies\ngoEnv - Setup Go environment\ngoGrpc - Generate gRPC and Protobuf code\ngoSwag - Generate Swagger files for Gin project, supported by github.com/swaggo/gin-swagger\ngoTest - Test Go project\n```\n\n# Configurations\n\n## build.gradle\n\n```\ngo {\n    // Change module path from default project name\n    pluginConfig.modulePath = \"\"\n\n    build {\n        // extra options/flags of `go build`\n        cmdArgs = []\n        \n        // extra envirnment variables of `go build`\n        envs = [\"CGO_ENABLED\": 0]\n        \n        // crossplatform build. Default: if empty or not specified, just build for local platform\n        osArches = [\n            \"darwin/amd64\", \n            \"linux/amd64\", \n            \"windows/amd64\"\n        ]\n        \n        // package paths to build. \n        packagePaths = [\n            \"./cmd/package1\"\n            \"./cmd/package2\"\n        ]\n    }\n    \n    dep {\n        // extra options/flags of `go get` for downloading package dependencies\n        cmdArgs = []\n            \n        // extra envirnment variables of `go get` for downloading package dependencies\n        envs = [\"CGO_ENABLED\": 0]\n        \n        // ignore third party tools download like Protobuf, Swaggo\n        thirdpartyIgnored = false\n        \n        // Protobuf version for downloading protobuf toolset. Default: \"3.6.1\"\n        protoVersion = \"3.8.0\"\n        \n        // version of https://github.com/swaggo/swag\n        swaggoVersion = \"1.5.1\"\n    }\n    \n    env {\n        // go version. Default: \"1.12.6\"\n        version = \"1.12\"\n        \n        // use project level go installation. Default: true\n        useSandbox = true\n    }\n    \n    grpc {\n        // Protobuf schemas root folder. Default: file(\"proto\")\n        protoDir = file(\"proto\")\n        \n        // Append the module path as prefix path of below packages when referenced in other protobuf gnerated stub go files\n        referencePackages = []\n    }\n\n    test {\n        // extra options/flags of `go test`\n        cmdArgs = []\n            \n        // extra envirnment variables of `go test`\n        envs = [\"CGO_ENABLED\": 0]\n        \n        // ignore folders for testing\n        ignoredDirs = [\"abc\"]\n    }\n\n    dependencies {\n        build \"github.com/golang/protobuf@v1.3.1\"\n        test \"github.com/stretchr/testify@v1.2.2\"\n    }\n}\n```\n\n## build.gradle.kts\n\n```\nextensions.getByType(GoPluginExtension::class).apply {\n    env {\n        useSandbox = true\n    }\n\n    build {\n        packagePaths = listOf(\"./cmd/package1\", \"./cmd/package2\")\n    }\n\n    dep {\n        thirdpartyIgnored = false\n    }\n\n    dependencies {\n        build(\"github.com/golang/protobuf@v1.3.1\")\n        test(\"github.com/stretchr/testify@v1.2.2\")\n    }\n}\n```\n\n# Go Environment\n`gralde goenv`, setup Go environment in .gogradle\n\n# gRPC Support\n`gralde godep`, besides resolving package dependencies, setup environments for popular go frameworks (gRPC, gRPC gateway, Gin-Swagger)\n\n`gralde gogrpc`, generate gRPC stubs from protobuf schemas and swagger files for gRPC gateway support\n\n# Swagger Support\n`gralde goswag`, generate swagger files for Gin-Swagger support\n\n# Dependencies Management\n`gralde godep`, resolve packages build/test dependencies in gogradle DSL, then create/update go.mod and download all dependent packages.\n\n# Test\n`gralde gotest`, run testing, also support ignored folders and different coverage reports (json, xml). XML is Cobertura compatible.\n\n# Custom Go Task\n```\nimport com.pivotstir.gogradle.tasks.Go\n\ntask myTask(type: Go) {\n    go(\"help test\", [:])\n    go(\"help build\", [:])\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finnobead%2Fgogradle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finnobead%2Fgogradle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finnobead%2Fgogradle/lists"}