{"id":27863257,"url":"https://github.com/justfairdev/oga-maven-plugin","last_synced_at":"2026-06-18T09:31:06.275Z","repository":{"id":233827880,"uuid":"785493426","full_name":"justfairdev/oga-maven-plugin","owner":"justfairdev","description":"🧩 Old GroupIds Alerter - A Maven plugin that checks for deprecated groupId+artifactId (e.g. did you know that graphql-spring-boot-starter moved from com.graphql-java to com.graphql-java-kickstart?).","archived":false,"fork":false,"pushed_at":"2024-04-12T01:50:40.000Z","size":918,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-14T02:33:01.171Z","etag":null,"topics":["dependency-analysis","maven-plugin"],"latest_commit_sha":null,"homepage":"https://central.sonatype.com/search?q=biz.lermitage.oga","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/justfairdev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.txt","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},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["http://buymeacoff.ee/jlermitage"]}},"created_at":"2024-04-12T01:50:26.000Z","updated_at":"2024-04-12T02:10:13.000Z","dependencies_parsed_at":"2024-04-17T12:16:13.204Z","dependency_job_id":"d86585f3-3a74-47ce-b50e-f028a6050831","html_url":"https://github.com/justfairdev/oga-maven-plugin","commit_stats":null,"previous_names":["passiondev2024/oga-maven-plugin","silkgod/oga-maven-plugin","justfairdev/oga-maven-plugin"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/justfairdev/oga-maven-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justfairdev%2Foga-maven-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justfairdev%2Foga-maven-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justfairdev%2Foga-maven-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justfairdev%2Foga-maven-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/justfairdev","download_url":"https://codeload.github.com/justfairdev/oga-maven-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justfairdev%2Foga-maven-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34485162,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["dependency-analysis","maven-plugin"],"created_at":"2025-05-04T20:46:53.112Z","updated_at":"2026-06-18T09:31:06.219Z","avatar_url":"https://github.com/justfairdev.png","language":"Kotlin","funding_links":["http://buymeacoff.ee/jlermitage"],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n    Old GroupIds Alerter - Maven Plugin\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/jonathanlermitage/oga-maven-plugin/blob/master/LICENSE.txt\"\u003e\u003cimg src=\"https://img.shields.io/github/license/jonathanlermitage/oga-maven-plugin.svg\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://search.maven.org/artifact/biz.lermitage.oga/oga-maven-plugin\"\u003e\u003cimg src=\"https://img.shields.io/maven-central/v/biz.lermitage.oga/oga-maven-plugin.svg\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nA Maven plugin that checks for deprecated *groupId + artifactId* couples, in order to reduce usage of non-maintained 3rd-party code (e.g. did you know that artifact `graphql-spring-boot-starter` moved from `from com.graphql-java` to `com.graphql-java-kickstart`?).\n\nWorks with Maven 3.3+ and JDK8+.\n\n*Looking for a Gradle plugin? Check [oga-gradle-plugin](https://github.com/jonathanlermitage/oga-gradle-plugin).*\n\n## Author\n\nJonathan Lermitage (\u003cjonathan.lermitage@gmail.com\u003e)  \nLinkedin profile: [jonathan-lermitage-092711142](https://www.linkedin.com/in/jonathan-lermitage-092711142/)\n\n## Usage\n\n### Goal\n\nThere's one maven goal: `biz.lermitage.oga:oga-maven-plugin:check`.\n\nExecution will produce error  message everytime a deprecated *groupId + artifactId* couple is found.  \nYou may see something like `[ERROR] 'com.graphql-java:graphql-spring-boot-starter' should be replaced by 'com.graphql-java-kickstart:graphql-spring-boot-starter'`, and Maven build failure.\n\n![Screenshot](terminal-error-screenshot.png)\n\n### Maven coordinates\n\nMaven coordinates ([Nexus](https://oss.sonatype.org/#nexus-search;quick~oga-maven-plugin)):\n\n```xml\n\u003cgroupId\u003ebiz.lermitage.oga\u003c/groupId\u003e\n\u003cartifactId\u003eoga-maven-plugin\u003c/artifactId\u003e\n\u003cversion\u003e1.8.0\u003c/version\u003e\n```\n\n### Configuration\n\nThe following properties can be set on the `oga-maven-plugin` plugin.\n\n| Maven Configuration Property | Command Line Property (if different) | Description                                                                                                                                                                                                                               | Default Value                                                                                                 |\n|:-----------------------------|:-------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------|\n| ogDefinitionsUrl             |                                      | Alternative location for og-definitions.json config file.\u003cbr/\u003eThe configuration value can be a local file path, or a URL.                                                                                                                 | https://raw.githubusercontent.com/jonathanlermitage/oga-maven-plugin/master/uc/og-definitions.json            |\n| ogUnofficialDefinitionsUrl   |                                      | Alternative location for og-unofficial-definitions.json config file.\u003cbr/\u003eThe configuration value can be a local file path, or a URL.                                                                                                      | https://raw.githubusercontent.com/jonathanlermitage/oga-maven-plugin/master/uc/og-unofficial-definitions.json |\n| additionalDefinitionFiles    |                                      | A list of locations for additional json config files which are processed in addition to those in the definitions at `ogDefinitionsUrl` and `ogUnofficialDefinitionsUrl`.\u003cbr/\u003eThe configuration values can be a local file path, or a URL. |                                                                                                               |\n| ignoreListFile               |                                      | Local file location of a JSON ignore-list in order to exclude some *groupIds* or *groupId + artifactIds*.                                                                                                                                 |                                                                                                               |\n| ignoreListUrl                |                                      | Remote file location of a JSON ignore-list in order to exclude some *groupIds* or *groupId + artifactIds* (ignored if `ignoreListFile` is defined).                                                                                       |                                                                                                               |\n| ignoreUnofficialMigrations   |                                      | Ignore unofficial definitions loaded from `ogUnofficialDefinitionsUrl`.                                                                                                                                                                   | `false`                                                                                                       |\n| failOnError                  |                                      | Fail on error, otherwise display an error message only.                                                                                                                                                                                   | `true`                                                                                                        |\n| skip                         | oga.maven.skip                       | Skip Check, for use in multi branch pipeline or command line override.                                                                                                                                                                    | `false`                                                                                                       |\n\n\n#### Failing the build\n\nBy default, your build will fail if you use this plugin, if you would like to receive a warning instead you can set the `failOnError` property like so:\n```xml\n\u003cplugin\u003e\n    \u003cgroupId\u003ebiz.lermitage.oga\u003c/groupId\u003e\n    \u003cartifactId\u003eoga-maven-plugin\u003c/artifactId\u003e\n    \u003cconfiguration\u003e\n        \u003cfailOnError\u003efalse\u003c/failOnError\u003e\n    \u003c/configuration\u003e\n\u003c/plugin\u003e\n```\n\n#### Changing the definitions\n\nBy default, this plugin is configured to use the [community maintained definitions files](https://github.com/jonathanlermitage/oga-maven-plugin/tree/master/uc) in \nthis repository. `og-definitions.json` defines official migration plans. `og-unofficial-definitions.json` defines unofficial migration plans for abandoned dependencies with no official successors (active forks are proposed instead).\n\nIf you would like to use **only** your own definitions you can override the location of the file:\n```xml\n\u003cplugin\u003e\n    \u003cgroupId\u003ebiz.lermitage.oga\u003c/groupId\u003e\n    \u003cartifactId\u003eoga-maven-plugin\u003c/artifactId\u003e\n    \u003cconfiguration\u003e\n        \u003cogDefinitionsUrl\u003ehttps://your-custom-location/your-og-definitions.json\u003c/ogDefinitionsUrl\u003e\n    \u003c/configuration\u003e\n\u003c/plugin\u003e\n```\n\nYour custom definitions file can mix official and unofficial migrations. See the structure of `og-definitions.json` and `og-unofficial-definitions.json` files for details.\n\nHowever, if you would like to get the benefit of the community maintained definitions **and** maintain your own definitions you can define additional files:\n```xml\n\u003cplugin\u003e\n    \u003cgroupId\u003ebiz.lermitage.oga\u003c/groupId\u003e\n    \u003cartifactId\u003eoga-maven-plugin\u003c/artifactId\u003e\n    \u003cconfiguration\u003e\n        \u003cadditionalDefinitionFiles\u003e\n            \u003c!-- A Remote Location --\u003e\n            \u003cadditionalDefinitionFile\u003ehttps://your-custom-location/your-og-definitions.json\u003c/additionalDefinitionFile\u003e\n            \u003c!-- A local file --\u003e\n            \u003cadditionalDefinitionFile\u003e./your-og-definitions.json\u003c/additionalDefinitionFile\u003e\n            \u003c!-- Multiple entries supported --\u003e\n        \u003c/additionalDefinitionFiles\u003e\n    \u003c/configuration\u003e\n\u003c/plugin\u003e\n```\n\n#### Ignoring definitions\n\nYou can also provide a JSON ignore-list in order to exclude some *groupIds* or *groupId + artifactIds*:\n```xml\n\u003cplugin\u003e\n    \u003cgroupId\u003ebiz.lermitage.oga\u003c/groupId\u003e\n    \u003cartifactId\u003eoga-maven-plugin\u003c/artifactId\u003e\n    \u003cconfiguration\u003e\n        \u003cignoreListFile\u003elocal-ignore-list.json\u003c/ignoreListFile\u003e\n        \u003c!-- or --\u003e\n        \u003cignoreListUrl\u003ehttps://website.com/remote-ignore-list.json\u003c/ignoreListUrl\u003e\n    \u003c/configuration\u003e\n\u003c/plugin\u003e\n```\nPlease see the sample [ignore-list file](sample/sample_ignore_list.json). For each of your dependencies or proposed migrations, the plugin will ignore it if it finds its coordinates in the ignore-list. So, by ignoring \"foo:bar\" (or \"foo\"), you will ignore this coordinate from your project dependencies and from the definitions file.\n\nYou can skip check (useful in multi-branch pipeline) by using the `oga.maven.skip` property.\n\nFinally, you can also set configuration in command line with `-DogDefinitionsUrl`, `-DignoreListFile`, `-DignoreListUrl`, `-DfailOnError`, `-Doga.maven.skip` properties.\n\n## Build\n\nJust call `./mvnw clean install` or `./do i` to build plugin and install into local Maven repository.  \n\n## Contribution\n\n### Code \n\nOpen an issue or a pull-request. Contributions must be tested at least on JDK8.  \nPlease reformat new code only: do not reformat the whole project or entire existing file (in other words, try do limit the amount of changes in order to speed up code review).\n\n### Definitions file\n\nThe list of deprecated *groupId + artifactId* couples is stored in [og-definitions.json](uc/og-definitions.json) file. To remove/update/add entries, you can [open an issue](https://github.com/jonathanlermitage/oga-maven-plugin/issues/new?assignees=\u0026labels=enhancement\u0026projects=\u0026template=definitions.yml\u0026title=Migration+definition+%60groupId%3AartifactId%60+to+%60groupId%3AartifactId%60), submit a merge request, or simply send an email (\u003cjonathan.lermitage@gmail.com\u003e).  \n\n### Find new entries for definitions file\n\nGo to [maven-index-search-suspect-coordinates](maven-index-search-suspect-coordinates/): this project downloads Maven Central indexes and looks for potential entries, then saves it to a file; i.e. artifactIds that exists for two different groupIds (keep in mind that 90~99% are false-positive).  \nYou can view resulting file here: [suspiciousCoordinates.txt](maven-index-search-suspect-coordinates/suspiciousCoordinates.txt) (warning, it's a ~3 MB file).  \nA filtered version is available here: [suspiciousCoordinates-filtered.txt](maven-index-search-suspect-coordinates/suspiciousCoordinates-filtered.txt) (~500 KB). In this file, we keep only dependency couples where a groupId is a part of the other groupdId, like `com.graphql-java` and `com.graphql-java-kickstart`.\n\n## License\n\nMIT License. In other words, you can do what you want: this project is entirely OpenSource, Free and Gratis.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjustfairdev%2Foga-maven-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjustfairdev%2Foga-maven-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjustfairdev%2Foga-maven-plugin/lists"}