in buildSrc/src/main/java/com/uber/okbuck/core/dependency/DependencyUtils.java [178:213]
public static void enforceChangingDeps(Project project, Configuration configuration) {
ExternalDependenciesExtension externalDependenciesExtension =
ProjectUtil.getOkBuckExtension(project).getExternalDependenciesExtension();
configuration.resolutionStrategy(
strategy -> {
strategy.eachDependency(
details -> {
String requested = details.getRequested().getVersion();
if (requested != null) {
if (requested.startsWith("+")
|| requested.contains(",")
|| requested.endsWith("-SNAPSHOT")) {
String dependency = details.getRequested().toString();
if (!externalDependenciesExtension
.getDynamicDependenciesToIgnore()
.contains(dependency)) {
String useVersion =
externalDependenciesExtension
.getDynamicDependencyVersionMap()
.get(dependency);
if (useVersion != null) {
details.useVersion(useVersion);
} else {
throw new IllegalStateException(
"Please do not use changing dependencies. They can cause hard to reproduce builds.\n"
+ "Found changing dependency "
+ details.getRequested()
+ " in Configuration "
+ configuration);
}
}
}
}
});
});
}