{"id":17968727,"url":"https://github.com/cortinico/kotlin-gradle-plugin-template","last_synced_at":"2025-05-15T17:09:17.602Z","repository":{"id":38230116,"uuid":"255118772","full_name":"cortinico/kotlin-gradle-plugin-template","owner":"cortinico","description":"🐘 A template to let you started with custom Gradle Plugins + Kotlin in a few seconds","archived":false,"fork":false,"pushed_at":"2025-05-13T13:05:41.000Z","size":559,"stargazers_count":494,"open_issues_count":3,"forks_count":37,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-05-13T14:27:33.654Z","etag":null,"topics":["github-actions","github-actions-gradle","github-template","github-templates","gradle","gradle-composite","gradle-compositebuild","gradle-plugin","gradle-plugin-development","gradle-plugin-kotlin","gradle-plugins","gradle-portal","hacktoberfest","kotlin","kotlin-dsl","kotlin-gradle","template","templates"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cortinico.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,"zenodo":null}},"created_at":"2020-04-12T16:00:25.000Z","updated_at":"2025-05-13T13:05:44.000Z","dependencies_parsed_at":"2023-02-15T12:15:52.692Z","dependency_job_id":"f5cfac03-2c77-45cb-844d-1cba83e7af6d","html_url":"https://github.com/cortinico/kotlin-gradle-plugin-template","commit_stats":{"total_commits":152,"total_committers":11,"mean_commits":"13.818181818181818","dds":0.3026315789473685,"last_synced_commit":"c4f34ba8a8a06f1c42ecc0832134354f2ff7121e"},"previous_names":[],"tags_count":1,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cortinico%2Fkotlin-gradle-plugin-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cortinico%2Fkotlin-gradle-plugin-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cortinico%2Fkotlin-gradle-plugin-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cortinico%2Fkotlin-gradle-plugin-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cortinico","download_url":"https://codeload.github.com/cortinico/kotlin-gradle-plugin-template/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254384989,"owners_count":22062422,"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":["github-actions","github-actions-gradle","github-template","github-templates","gradle","gradle-composite","gradle-compositebuild","gradle-plugin","gradle-plugin-development","gradle-plugin-kotlin","gradle-plugins","gradle-portal","hacktoberfest","kotlin","kotlin-dsl","kotlin-gradle","template","templates"],"created_at":"2024-10-29T14:41:22.323Z","updated_at":"2025-05-15T17:09:12.592Z","avatar_url":"https://github.com/cortinico.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kotlin-gradle-plugin-template 🐘\n\n[![Use this template](https://img.shields.io/badge/-Use%20this%20template-brightgreen)](https://github.com/cortinico/kotlin-gradle-plugin-template/generate) [![Pre Merge Checks](https://github.com/cortinico/kotlin-gradle-plugin-template/workflows/Pre%20Merge%20Checks/badge.svg)](https://github.com/cortinico/kotlin-gradle-plugin-template/actions?query=workflow%3A%22Pre+Merge+Checks%22)  [![License](https://img.shields.io/github/license/cortinico/kotlin-android-template.svg)](LICENSE) ![Language](https://img.shields.io/github/languages/top/cortinico/kotlin-android-template?color=blue\u0026logo=kotlin)\n\nA simple Github template that lets you create a **Gradle Plugin** 🐘 project using **100% Kotlin** and be up and running in a **few seconds**.\n\nThis template is focused on delivering a project with **static analysis** and **continuous integration** already in place.\n\n## How to use 👣\n\nJust click on [![Use this template](https://img.shields.io/badge/-Use%20this%20template-brightgreen)](https://github.com/cortinico/kotlin-gradle-plugin-template/generate) button to create a new repo starting from this template.\n\nOnce created don't forget to update the:\n- [gradle.properties](plugin-build/gradle.properties)\n- Plugin Usages (search for [com.ncorti.kotlin.gradle.template](https://github.com/cortinico/kotlin-gradle-plugin-template/search?q=com.ncorti.kotlin.gradle.template\u0026unscoped_q=com.ncorti.kotlin.gradle.template) in the repo and replace it with your ID).\n\n## Features 🎨\n\n- **100% Kotlin-only template**.\n- Plugin build setup with **composite build**.\n- 100% Gradle Kotlin DSL setup.\n- Dependency versions managed via Gradle Versions Catalog (`libs.versions.toml`).\n- CI Setup with GitHub Actions.\n- Kotlin Static Analysis via `ktlint` and `detekt`.\n- Publishing-ready to Gradle Portal.\n- Issues Template (bug report + feature request)\n- Pull Request Template.\n\n## Composite Build 📦\n\nThis template is using a [Gradle composite build](https://docs.gradle.org/current/userguide/composite_builds.html) to build, test and publish the plugin. This means that you don't need to run Gradle twice to test the changes on your Gradle plugin (no more `publishToMavenLocal` tricks or so).\n\nThe included build is inside the [plugin-build](plugin-build) folder.\n\n### `preMerge` task\n\nA `preMerge` task on the top level build is already provided in the template. This allows you to run all the `check` tasks both in the top level and in the included build.\n\nYou can easily invoke it with:\n\n```\n./gradlew preMerge\n```\n\nIf you need to invoke a task inside the included build with:\n\n```\n./gradlew -p plugin-build \u003ctask-name\u003e\n```\n\n\n### Dependency substitution\n\nPlease note that the project relies on module name/group in order for [dependency substitution](https://docs.gradle.org/current/userguide/resolution_rules.html#sec:dependency_substitution_rules) to work properly. If you change only the plugin ID everything will work as expected. If you change module name/group, things might break and you probably have to specify a [substitution rule](https://docs.gradle.org/current/userguide/resolution_rules.html#sub:project_to_module_substitution).\n\n\n## Publishing 🚀\n\nThis template is ready to let you publish to [Gradle Portal](https://plugins.gradle.org/).\n\nThe [![Publish Plugin to Portal](https://github.com/cortinico/kotlin-gradle-plugin-template/workflows/Publish%20Plugin%20to%20Portal/badge.svg?branch=1.0.0)](https://github.com/cortinico/kotlin-gradle-plugin-template/actions?query=workflow%3A%22Publish+Plugin+to+Portal%22) Github Action will take care of the publishing whenever you **push a tag**.\n\nPlease note that you need to configure two secrets: `GRADLE_PUBLISH_KEY` and `GRADLE_PUBLISH_SECRET` with the credentials you can get from your profile on the Gradle Portal.\n\n## 100% Kotlin 🅺\n\nThis template is designed to use Kotlin everywhere. The build files are written using [**Gradle Kotlin DSL**](https://docs.gradle.org/current/userguide/kotlin_dsl.html) as well as the [Plugin DSL](https://docs.gradle.org/current/userguide/plugins.html#sec:plugins_block) to setup the build.\n\nDependencies are centralized inside the [libs.versions.toml](gradle/libs.versions.toml).\n\nMoreover, a minimalistic Gradle Plugin is already provided in Kotlin to let you easily start developing your own around it.\n\n## Static Analysis 🔍\n\nThis template is using [**ktlint**](https://github.com/pinterest/ktlint) with the [ktlint-gradle](https://github.com/jlleitschuh/ktlint-gradle) plugin to format your code. To reformat all the source code as well as the buildscript you can run the `ktlintFormat` gradle task.\n\nThis template is also using [**detekt**](https://github.com/arturbosch/detekt) to analyze the source code, with the configuration that is stored in the [detekt.yml](config/detekt/detekt.yml) file (the file has been generated with the `detektGenerateConfig` task).\n\n## CI ⚙️\n\nThis template is using [**GitHub Actions**](https://github.com/cortinico/kotlin-android-template/actions) as CI. You don't need to setup any external service and you should have a running CI once you start using this template.\n\nThere are currently the following workflows available:\n- [Validate Gradle Wrapper](.github/workflows/gradle-wrapper-validation.yml) - Will check that the gradle wrapper has a valid checksum\n- [Pre Merge Checks](.github/workflows/pre-merge.yaml) - Will run the `preMerge` tasks as well as trying to run the Gradle plugin.\n- [Publish to Plugin Portal](.github/workflows/publish-plugin.yaml) - Will run the `publishPlugin` task when pushing a new tag.\n\n## Contributing 🤝\n\nFeel free to open a issue or submit a pull request for any bugs/improvements.\n\n## License 📄\n\nThis template is licensed under the MIT License - see the [License](LICENSE) file for details.\nPlease note that the generated template is offering to start with a MIT license but you can change it to whatever you wish, as long as you attribute under the MIT terms that you're using the template.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcortinico%2Fkotlin-gradle-plugin-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcortinico%2Fkotlin-gradle-plugin-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcortinico%2Fkotlin-gradle-plugin-template/lists"}