{"id":15515924,"url":"https://github.com/remal-gradle-plugins/lombok","last_synced_at":"2025-09-01T14:33:42.192Z","repository":{"id":63214316,"uuid":"559752794","full_name":"remal-gradle-plugins/lombok","owner":"remal-gradle-plugins","description":"A Gradle plugin that configures Lombok annotation processor","archived":false,"fork":false,"pushed_at":"2025-04-21T12:02:02.000Z","size":1031,"stargazers_count":3,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-21T12:38:19.190Z","etag":null,"topics":["gradle","gradle-plugin","java","lombok","lombok-gradle","plugin"],"latest_commit_sha":null,"homepage":"","language":"Java","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/remal-gradle-plugins.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":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-10-31T02:37:14.000Z","updated_at":"2025-04-21T12:02:05.000Z","dependencies_parsed_at":"2023-12-01T18:32:46.997Z","dependency_job_id":"1980ea0d-824d-47f0-8f66-675a5a389bf1","html_url":"https://github.com/remal-gradle-plugins/lombok","commit_stats":{"total_commits":351,"total_committers":4,"mean_commits":87.75,"dds":0.3817663817663818,"last_synced_commit":"a83b27eb909f588603bd533f2118528ee0789c8a"},"previous_names":[],"tags_count":31,"template":false,"template_full_name":"remal-gradle-plugins/template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remal-gradle-plugins%2Flombok","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remal-gradle-plugins%2Flombok/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remal-gradle-plugins%2Flombok/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remal-gradle-plugins%2Flombok/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/remal-gradle-plugins","download_url":"https://codeload.github.com/remal-gradle-plugins/lombok/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250362543,"owners_count":21418112,"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":["gradle","gradle-plugin","java","lombok","lombok-gradle","plugin"],"created_at":"2024-10-02T10:04:56.609Z","updated_at":"2025-09-01T14:33:42.169Z","avatar_url":"https://github.com/remal-gradle-plugins.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"**Tested on Java LTS versions from \u003c!--property:java-runtime.min-version--\u003e11\u003c!--/property--\u003e to \u003c!--property:java-runtime.max-version--\u003e24\u003c!--/property--\u003e.**\n\n**Tested on Gradle versions from \u003c!--property:gradle-api.min-version--\u003e7.0\u003c!--/property--\u003e to \u003c!--property:gradle-api.max-version--\u003e9.1.0-rc-1\u003c!--/property--\u003e.**\n\n# `name.remal.lombok` plugin\n\n[![configuration cache: supported from v2.2](https://img.shields.io/static/v1?label=configuration%20cache\u0026message=supported+from+v2.2\u0026color=success)](https://docs.gradle.org/current/userguide/configuration_cache.html)\n\nUsage:\n\n\u003c!--plugin-usage:name.remal.lombok--\u003e\n```groovy\nplugins {\n    id 'name.remal.lombok' version '3.1.1'\n}\n```\n\u003c!--/plugin-usage--\u003e\n\n\u0026nbsp;\n\nThis plugin adds [Lombok annotation processor](https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.38) to `compileOnly` and `annotationProcessor` configurations for every [`SourceSet`](https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/SourceSet.html).\n\nThis is done via creating `lombok` configuration and making `compileOnly` and `annotationProcessor` configurations extend it.\n\n## Plugin configuration\n\nThe plugin can be configured via `lombok` extension:\n\n```groovy\nlombok {\n  lombokVersion = '1.18.38' // Lombok version\n}\n```\n\nThe used Lombok version can also be configured via constraints. This is useful for tools that automatically update dependencies (like [Renovate](https://renovatebot.com/)).\n\n```groovy\ndependencies {\n  constraints {\n    lombok 'org.projectlombok:lombok:1.18.38'\n  }\n}\n```\n\n## Lombok config support\n\nThis plugin supports [the Lombok configuration system](https://projectlombok.org/features/configuration).\n\n### Up-to-date checks for `JavaCompile` tasks\n\n`lombok.config` files are added to input files for all [`JavaCompile`](https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/compile/JavaCompile.html) tasks. So, if you change `lombok.config` file(s), your code will be recompiled.\n\n### Lombok config validation\n\n`lombok.config` files are validated via `validateLombokConfig` task. `check` task is configured to execute `validateLombokConfig`.\n\nSupported rules can be found [here](config-rules).\n\nThe validation can be additionally configured:\n\n```groovy\nlombok {\n  config {\n    validate {\n      disabledRules.add('AddGeneratedAnnotation') // Disable `AddGeneratedAnnotation` rule\n    }\n  }\n}\n```\n\n### Lombok config generation\n\n`lombok.config` file can be generated:\n\n```groovy\nlombok {\n  config {\n    generate {\n      enabled = true // To enable generation\n      set('lombok.addLombokGeneratedAnnotation', true) // Add `lombok.addLombokGeneratedAnnotation = true` line\n      plus('lombok.copyableAnnotations', 'com.fasterxml.jackson.annotation.JsonProperty') // Add `lombok.copyableAnnotations += com.fasterxml.jackson.annotation.JsonProperty` line\n      minus('lombok.copyableAnnotations', 'com.fasterxml.jackson.annotation.JsonProperty') // Add `lombok.copyableAnnotations -= com.fasterxml.jackson.annotation.JsonProperty` line\n      clear('lombok.copyableAnnotations') // Add `clear lombok.copyableAnnotations` line\n    }\n  }\n}\n```\n\n## Delombok\n\nA `delombok` task is created for every [`SourceSet`](https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/SourceSet.html).\n\nThe `javadoc` task is configured to process delomboked sources.\n\nDelombok format con be configured this way:\n\n```groovy\nlombok {\n  delombok {\n    format {\n      pretty = true // To use `--format=pretty`\n      indent = '2' // To use `--format=indent:2`\n      emptyLines = 'INDENT' // To use `--format=emptyLines:indent`\n      finalParams = 'SKIP' // To use `--format=finalParams:skip`\n      constructorProperties = 'GENERATE' // To use `--format=finalParams:generate`\n      suppressWarnings = 'SKIP' // To use `--format=suppressWarnings:skip`\n      generated = 'GENERATE' // To use `--format=generated:generate`\n      danceAroundIdeChecks = 'SKIP' // To use `--format=danceAroundIdeChecks:skip`\n      generateDelombokComment = 'GENERATE' // To use `--format=generateDelombokComment:generate`\n      javaLangAsFQN = 'SKIP' // To use `--format=javaLangAsFQN:skip`\n    }\n  }\n}\n```\n\n## MapStruct support\n\n[`lombok-mapstruct-binding`](https://mvnrepository.com/artifact/org.projectlombok/lombok-mapstruct-binding/0.2.0) dependency is added to `annotationProcessor` configuration for every [`SourceSet`](https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/SourceSet.html).\n\nThe MapStruct annotation processor is always put before the Lombok annotation processor. It is done to prevent [this MapStruct dependency ordering issue](https://github.com/mapstruct/mapstruct/issues/1581). The issue is marked as fixed, but it is still reproducible.\n\nThis logic is executed whether MapStruct is used in the project or not.\n\n## Micronaut compatibility\n\nThe Lombok annotation processor should always be before the Micronaut annotation processor to prevent issues like [this](https://github.com/micronaut-projects/micronaut-core/issues/218). This plugin automatically applies a fix described [here](https://github.com/micronaut-projects/micronaut-core/issues/218#issuecomment-397584046).\n\n## Compatibility with other annotation processors\n\nBy default, the Lombok annotation processor is always put before any other annotation processors.\n\nExceptions:\n\n* MapStruct - Lombok is always put after\n\nIf there is a compatibility issue and the Lombok annotation processor has to be after some processor (like MapStruct), please report it.\n\n# Migration guide\n\n## Version 2.* to 3.*\n\nThe minimum Java version is 11 (from 8).\nThe minimum Gradle version is 7.0 (from 6.7).\n\n## Version 1.* to 2.*\n\n* Package name was changed from `name.remal.gradleplugins.lombok` to `name.remal.gradle_plugins.lombok`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremal-gradle-plugins%2Flombok","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fremal-gradle-plugins%2Flombok","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremal-gradle-plugins%2Flombok/lists"}