{"id":18949960,"url":"https://github.com/salesforce/proto-backwards-compat-maven-plugin","last_synced_at":"2025-04-15T14:59:18.975Z","repository":{"id":45292807,"uuid":"144676084","full_name":"salesforce/proto-backwards-compat-maven-plugin","owner":"salesforce","description":"A Maven plugin for protecting against backwards incompatible changes to your gRPC .proto files.","archived":false,"fork":false,"pushed_at":"2024-05-06T12:56:24.000Z","size":25016,"stargazers_count":13,"open_issues_count":8,"forks_count":11,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-15T14:59:09.532Z","etag":null,"topics":["grpc-java","maven-plugin","protobuf"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/salesforce.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2018-08-14T06:09:36.000Z","updated_at":"2024-09-19T04:12:59.000Z","dependencies_parsed_at":"2024-06-21T18:58:49.002Z","dependency_job_id":"ec66bca9-1a25-4e39-b13b-cf6c18e18157","html_url":"https://github.com/salesforce/proto-backwards-compat-maven-plugin","commit_stats":{"total_commits":61,"total_committers":10,"mean_commits":6.1,"dds":0.2622950819672131,"last_synced_commit":"054d234c943a5d3b0674485b8ee7e6ffddd3b99b"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salesforce%2Fproto-backwards-compat-maven-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salesforce%2Fproto-backwards-compat-maven-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salesforce%2Fproto-backwards-compat-maven-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salesforce%2Fproto-backwards-compat-maven-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/salesforce","download_url":"https://codeload.github.com/salesforce/proto-backwards-compat-maven-plugin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249094940,"owners_count":21211837,"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":["grpc-java","maven-plugin","protobuf"],"created_at":"2024-11-08T13:19:54.796Z","updated_at":"2025-04-15T14:59:18.951Z","avatar_url":"https://github.com/salesforce.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.salesforce.servicelibs/proto-backwards-compatibility/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.salesforce.servicelibs/proto-backwards-compatibility)\n\nProtolock Version: [20210218T172155Z](https://github.com/nilslice/protolock/releases/tag/v0.15.2)\n\n# Protobuf Backwards Compatibility Check Maven Plugin\n\nThe `proto-backwards-compatibility` plugin is a Maven plugin to\nrun a backwards compatibility check on a set of protobuf IDL files. The plugin\ncan be integrated into various phases of a maven build to check that any changes to\na set of .proto files are backwards compatible. This ensures that these changes do\nnot impact existing users that haven't had a chance to update to these latest changes.\nA proto.lock file is created in the proto source directory to keep\ntrack of the state of the .proto files. This file is updated when a non-breaking change\nis made, and should be checked in along with any other changes.\n\nIt is also possible to force any breaking changes and reset the current state\nby either\n\n* deleting the proto.lock file. It will then reinitialize the next time the\nplugin is run.\n* or by specifying parameter property `acceptBreakingChanges` (`-DacceptBreakingChanges=true`)\n\n#### Maintaining Backwards Compatibility\nIn order to maintain backwards compatibility for your set of .proto files, a few\nrules must be followed when making updates. Please refer here to avoid breaking changes:\nhttps://developers.google.com/protocol-buffers/docs/proto#backwards-compatibility\n\n## Usage\n\nThe `os-maven-plugin` extension (https://github.com/trustin/os-maven-plugin) \nmust be added to your project's pom.xml file in order for this plugin to work.\n\n```xml\n\u003cbuild\u003e\n    \u003cextensions\u003e\n        \u003cextension\u003e\n            \u003cgroupId\u003ekr.motd.maven\u003c/groupId\u003e\n            \u003cartifactId\u003eos-maven-plugin\u003c/artifactId\u003e\n            \u003cversion\u003e1.4.1.Final\u003c/version\u003e\n        \u003c/extension\u003e\n    \u003c/extensions\u003e\n    \u003cplugins\u003e\n        \u003cplugin\u003e\n            \u003cgroupId\u003ecom.salesforce.servicelibs\u003c/groupId\u003e\n            \u003cartifactId\u003eproto-backwards-compatibility\u003c/artifactId\u003e\n            \u003cversion\u003e${proto-backwards-compatibility.version}\u003c/version\u003e\n            \u003cconfiguration\u003e\n                \u003c!-- Optional alternative protos location --\u003e\n                \u003cprotoSourceRoot\u003esrc/main/proto\u003c/protoSourceRoot\u003e\n                \u003c!-- Optional alternative proto.lock location --\u003e\n                \u003clockDir\u003esrc/main/proto\u003c/lockDir\u003e\n            \u003c/configuration\u003e\n            \u003cexecutions\u003e\n                \u003cexecution\u003e\n                    \u003cgoals\u003e\n                        \u003cgoal\u003ebackwards-compatibility-check\u003c/goal\u003e\n                    \u003c/goals\u003e\n                \u003c/execution\u003e\n            \u003c/executions\u003e\n        \u003c/plugin\u003e\n    \u003c/plugins\u003e\n\u003c/build\u003e\n```\n\n## Configuration\n\n* `\u003cprotoSourceRoot\u003e` (`${basedir}/src/main/proto`) - The directory where proto sources can be found.\n* `\u003clockDir\u003e` (defaults to root of proto files) - The directory where proto.lock will be kept.\n* `\u003coptions\u003e` (empty) - Additional [command line options](https://github.com/nilslice/protolock#usage) to pass to protolock.\n\n```xml\n\u003cconfiguration\u003e\n    \u003cplugins\u003e\n        \u003cprotoSourceRoot\u003esrc/main/proto\u003c/protoSourceRoot\u003e\n        \u003coptions\u003e--ignore=target/\u003c/options\u003e\n        \u003clockDir\u003e${project.basedir}\u003c/lockDir\u003e\n    \u003c/plugins\u003e\n\u003c/configuration\u003e\n```\n\n## Plugins\nProtolock has [plugin support](https://github.com/nilslice/protolock/wiki/Plugins), to allow\nfor new rules to be enforced. Protolock plugins are referenced by adding the following\nadditional configuration to your pom.xml.\n\n```xml\n\u003cconfiguration\u003e\n    \u003cplugins\u003e\n        \u003c!-- Plugin executable distributed by Maven --\u003e\n        \u003cplugin\u003ecom.salesforce.servicelibs:sample-plugin:0.1.0-SNAPSHOT:${os.detected.classifier}\u003c/plugin\u003e\n        \u003c!-- Plugin executable found on the system path --\u003e\n        \u003cplugin\u003esample-plugin\u003c/plugin\u003e\n    \u003c/plugins\u003e\n\u003c/configuration\u003e\n```\n\n## Acknowledgements\nThank you to Steve Manuel for his protocol buffer compatiblity tracker which\nis a key component of this plugin: https://github.com/nilslice/protolock\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsalesforce%2Fproto-backwards-compat-maven-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsalesforce%2Fproto-backwards-compat-maven-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsalesforce%2Fproto-backwards-compat-maven-plugin/lists"}