https://docs.gradle.org/current/userguide/single_versions.html
Direct dependencies vs dependency constraints
When Gradle attempts to resolve a dependency to a module version,
all dependency declarations with version, all transitive dependencies and all dependency constraints for that module are taken into consideration.
The highest version that matches all conditions is selected.
the latest means publish to maven repo time. such as, sometime, 1.10 is published later than 2.2.
and what situation use latest, what situation use highest?