The issue now is that hive-shims depends on hive-shims-0.20, hive-shims-0.20S, and hive-shims-0.23. ql depends on hive-shims. When ql brings in hive-shims it brings it all transitive dependencies which include three different versions of hadoop. Since hive-shims should not bring any dependencies with it because we expect the end-user module to bring it's hadoop hadoop version.
One way to do that is to mark all the hive-shims-* dependencies in hive-shims optional.