{"id":19765716,"url":"https://github.com/openhft/binary-compatibility-enforcer-plugin","last_synced_at":"2025-04-30T15:30:49.309Z","repository":{"id":41668698,"uuid":"316833296","full_name":"OpenHFT/Binary-Compatibility-Enforcer-Plugin","owner":"OpenHFT","description":"Wraps the Java API ComplianceChecker into a maven plugin","archived":false,"fork":false,"pushed_at":"2024-01-30T17:30:13.000Z","size":334,"stargazers_count":7,"open_issues_count":1,"forks_count":6,"subscribers_count":14,"default_branch":"main","last_synced_at":"2024-01-31T19:01:07.024Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenHFT.png","metadata":{"files":{"readme":"ReadMe.adoc","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}},"created_at":"2020-11-28T22:30:20.000Z","updated_at":"2022-05-27T21:27:13.000Z","dependencies_parsed_at":"2022-08-10T08:51:23.297Z","dependency_job_id":null,"html_url":"https://github.com/OpenHFT/Binary-Compatibility-Enforcer-Plugin","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenHFT%2FBinary-Compatibility-Enforcer-Plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenHFT%2FBinary-Compatibility-Enforcer-Plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenHFT%2FBinary-Compatibility-Enforcer-Plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenHFT%2FBinary-Compatibility-Enforcer-Plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenHFT","download_url":"https://codeload.github.com/OpenHFT/Binary-Compatibility-Enforcer-Plugin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224214845,"owners_count":17274692,"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":"2024-11-12T04:19:11.814Z","updated_at":"2024-11-12T04:19:12.979Z","avatar_url":"https://github.com/OpenHFT.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"= Overview\n\n\nThis is a maven plugin that wraps - https://github.com/lvc/japi-compliance-checker\n\nThis plugin uses the perl scripts and components of japi-compliance-checker directly. So japi-compliance-checker has to be installed and available on your $PATH.\n\nNOTE: If this plugin is run on a machine where japi-compliance-checker is not installed. A warning message will be seen, highlighting that the japi-compliance-checker is not available.\n\n\n=== What it does\n\nIt allows us to better detect breaking changes of binary compatibility, this plugin enforces, that we only allow these changes, when there has been a change to the \"MinorVersion”. \n\nThe above is assuming the following maven version format : ( see also https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN8855) \n\n\u003cMajorVersion\u003e.\u003cMinorVersion\u003e.\u003cIncrementalVersion\u003e\n\nNOTE: No validation is carried out if the current version is `\u003cx\u003e.\u003cy\u003e.0` or `\u003cx\u003e.\u003cy\u003e.0-SNAPSHOT`\n\n= OS supported\n\n* Mac\n* Linux\n\nNot supported yet\n\n* Windows\n\n= Install\n\n* JDK or OpenJDK - development files\n* Maven\n* Perl 5\n* https://github.com/lvc/japi-compliance-checker#install\n[source,shell script]\n----\n$git clone git@github.com:lvc/japi-compliance-checker.git\n$cd japi-compliance-checker/\n[source,shell script]\n----\n== Linxu\n\n```\nsudo make install prefix=/usr\n```\n\n== Mac\n\n=== Permissions\n\nset the approximate permission\n[source,shell script]\n----\n$chmod -R 775 \u003cpath\u003e\n----\n=== Link\n\n```\nln -s japi-compliance-checker.pl japi-compliance-checker \n```\n\n=== Path \n\nAdd the japi-compliance-checker to your path\n\nfor example on a mac if you have installed it to ~/\u003cpath\u003e/japi-compliance-checker\n\n[source,shell script]\n----\n$vi ~/.profile\n----\n\nadd the following:\n\n[source,shell script]\n----\nexport PATH=\"$PATH:~/\u003cpath\u003e/japi-compliance-checker\"\n----\n\n= Configuration\n\n|===\n| parameter  | default value | Example | Required / Optional\n\n| referenceVersion\n| \u003cx\u003e.\u003cy\u003e.0\n| 5.20.120\n| optional\n\n| artifactsURI\n|\n| https://teamcity.chronicle.software/repository/download\n| optional\n\n| expression\n| japi-compliance-checker -lib %s %s %s -report-path %s\n|\n| optional\n\n| binaryCompatibilityPercentageRequired\n| 100\n|\n| optional\n\n| reportLocation\n| target\n|\n| optional\n\n|===\n\n=== Reference Version\n\nIf you specify a reference version this will be used instead of the default reference version. If the reference version you provide is not availible in maven central, an error will be reported. \nHence if no reference version is provided then the default version is used. The default version is \u003cx\u003e.\u003cy\u003e.0 version, for example assume that you where on 5.20.143-SNAPSHOT then this would be checked ( by default ) against 5.20.0, If 5.20.0 does not exist in maven central, then an error will be reported.\n\n=== Expression\n\n`japi-compliance-checker -lib %s %s %s`\nthe `%s` are defind in the following order:\n\n* name - the artifact name\n* first jar  - reference version\n* second jar - current project version\n\nThese jar will be resolved at runtime of the plugin.\n\nThis `expression`, is the expression that is passed directly to japi-compliance-checker, for more information on the options see https://github.com/lvc/japi-compliance-checker, or run:\n\n[source,shell script]\n----\njapi-compliance-checker -help\n----\n\n=== ArtifactsURI\n\nUsed to host the error report on a teamcity server, see section below on Teamcity.\n\n=== Binary Compatibility Percentage Required\n\nWhen the `japi-compliance-checker` is run, it provides the `binary compatibility` as a percentage, if the percentage that is reported is lower than the `binaryCompatibilityPercentageRequired`, the validation will fail and a link will be provided to an html a report. By default the `binaryCompatibilityPercentageRequired` is set to 100%.\n\n== Maven\n\n[source,xml]\n----\n\u003cplugin\u003e\n    \u003cgroupId\u003esoftware.chronicle\u003c/groupId\u003e\n    \u003cartifactId\u003ebinary-compatibility-enforcer-plugin\u003c/artifactId\u003e\n    \u003cversion\u003e1.0.0\u003c/version\u003e\n    \u003cexecutions\u003e\n        \u003cexecution\u003e\n            \u003cphase\u003everify\u003c/phase\u003e\n            \u003cgoals\u003e\n                \u003cgoal\u003eenforcer\u003c/goal\u003e\n            \u003c/goals\u003e\n            \u003cconfiguration\u003e\n                \u003c!-- the version that it checks against --\u003e\n                \u003c!-- if not set it will check against the \u003cx\u003e.\u003cy\u003e.0 version --\u003e\n                \u003creferenceVersion\u003e2.20.2\u003c/referenceVersion\u003e\n                \u003cexpression\u003ejapi-compliance-checker -lib %s %s %s\u003c/expression\u003e\n            \u003c/configuration\u003e\n        \u003c/execution\u003e\n    \u003c/executions\u003e\n\u003c/plugin\u003e\n----\n\n\n== Teamcity\n\nIf you are using teamcity, then to host the report on your teamcity server you should set `**/compat_report.html` in the following ( see example ):\n\nimage::/docs/images/teamcity.png[]\n\nand set add the following to your config \n\n```\n\u003cconfiguration\u003e\n    \u003cartifactsURI\u003e \u003c!-- YOUR TEAMCITY SERVER URL --\u003e \u003c/artifactsURI\u003e\n\u003c/configuration\u003e\n```          \n\nfor example:\n\n```\n\u003cplugin\u003e\n    \u003cgroupId\u003enet.openhft\u003c/groupId\u003e\n    \u003cartifactId\u003ebinary-compatibility-enforcer-plugin\u003c/artifactId\u003e\n    \u003cversion\u003e1.0.3\u003c/version\u003e\n    \u003cexecutions\u003e\n        \u003cexecution\u003e\n            \u003cphase\u003everify\u003c/phase\u003e\n            \u003cgoals\u003e\n                \u003cgoal\u003eenforcer\u003c/goal\u003e\n            \u003c/goals\u003e\n            \u003cconfiguration\u003e\n                \u003creferenceVersion\u003e1.7.12\u003c/referenceVersion\u003e\n                \u003cartifactsURI\u003ehttps://teamcity.chronicle.software/repository/download\u003c/artifactsURI\u003e\n            \u003c/configuration\u003e\n        \u003c/execution\u003e\n    \u003c/executions\u003e\n\u003c/plugin\u003e\n```\nfor example like this\n\nimage::/docs/images/html-report.png[]\n\nIf you set the `artifactsURI` configuration and you are not running on teamcity this setting will be ignored.\n            \n\n\n            \n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenhft%2Fbinary-compatibility-enforcer-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenhft%2Fbinary-compatibility-enforcer-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenhft%2Fbinary-compatibility-enforcer-plugin/lists"}