Detect and prohibit new Guava classes #3869
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #3859
Problem
We want to keep dependencies to an absolute minimum as this is a low level library. However we make an exception for a few selected Guava classes which are shaded in.
There's a potential risk where someone uses a new Guava class in a pull request, and either:
Solution
This PR adds an Archunit test to detect new Guava class usage and produce a helpful error message to guide contributors to 1. use non-Guava versions where possible or 2. adjust the Gradle build file to shade in the new class
Sample output
Example of deliberately failing pipeline (before I added the full set of exemptions): https://github.com/graphql-java/graphql-java/pull/3869/checks?check_run_id=39620708772
Note
We don't yet use anything from the
math
orprimitives
packages directly, but these are transitively used bycollect
, so they also need to be shaded in