java_library(
name = "uses_canonical_ver",
srcs = ["UsesCanonical.java"],
deps = ["//3rdparty/some_lib"]
)
#without exclude it's non deterministic what you'll get in runtime for `A.say`
java_library(
name = "uses_new_ver",
srcs = ["WantsToUseNewVer.java"],
deps = ["//3rdparty/some_lib/new_ver",":uses_canonical_ver"],
#exclude = ["//3rdparty/some_lib"]
)
Where A is a "third party" made up library with different runtime behavior.
new:
class A {
public static String say = "new";
}
canonical:
class A {
public static String say = "old";
}