{"id":27874774,"url":"https://github.com/camerodev/oga-maven-plugin","last_synced_at":"2025-05-05T01:38:15.797Z","repository":{"id":286641997,"uuid":"961554030","full_name":"camerodev/oga-maven-plugin","owner":"camerodev","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-06T18:47:07.000Z","size":951,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T16:43:27.384Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/camerodev.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,"publiccode":null,"codemeta":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":"2025-04-06T18:47:00.000Z","updated_at":"2025-04-06T18:47:24.000Z","dependencies_parsed_at":"2025-04-07T16:44:09.267Z","dependency_job_id":"2295d117-ff4c-4cdc-898b-d3afaa0e4c8b","html_url":"https://github.com/camerodev/oga-maven-plugin","commit_stats":null,"previous_names":["camerodev/oga-maven-plugin"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camerodev%2Foga-maven-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camerodev%2Foga-maven-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camerodev%2Foga-maven-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camerodev%2Foga-maven-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/camerodev","download_url":"https://codeload.github.com/camerodev/oga-maven-plugin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252424940,"owners_count":21745835,"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":[],"created_at":"2025-05-05T01:38:15.204Z","updated_at":"2025-05-05T01:38:15.784Z","avatar_url":"https://github.com/camerodev.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\u003cplugin\u003e\n    \u003cgroupId\u003ebiz.lermitage.oga\u003c/groupId\u003e\n    \u003cartifactId\u003eoga-maven-plugin\u003c/artifactId\u003e\n    \u003cversion\u003e1.9.4\u003c/version\u003e\n\u003c/plugin\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\nIn some cases your definition file might be shared across many projects.\nAs an alternative to copying and pasting this file into each build, you can package your definitions into a JAR and reference it 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        \u003cadditionalDefinitionFiles\u003e\n            \u003cadditionalDefinitionFile\u003eclasspath-og-definitions.json\u003c/additionalDefinitionFile\u003e\n        \u003c/additionalDefinitionFiles\u003e\n    \u003c/configuration\u003e\n    \u003cdependencies\u003e\n        \u003c!-- Dependency contains /classpath-og-definitions.json --\u003e\n        \u003cdependency\u003e\n            \u003cgroupId\u003ecom.example.oga\u003c/groupId\u003e\n            \u003cartifactId\u003ebuild-config\u003c/artifactId\u003e\n            \u003cversion\u003e1.0.0\u003c/version\u003e\n        \u003c/dependency\u003e\n    \u003c/dependencies\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 groupId, 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%2Fcamerodev%2Foga-maven-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcamerodev%2Foga-maven-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcamerodev%2Foga-maven-plugin/lists"}