in src/main/java/org/apache/maven/buildcache/RemoteCacheRepositoryImpl.java [216:251]
public Optional<Build> findBaselineBuild(MavenProject project) {
Optional<List<ProjectReport>> cachedProjectsHolder = findCacheInfo().map(CacheReport::getProjects);
if (!cachedProjectsHolder.isPresent()) {
return Optional.empty();
}
final List<ProjectReport> projects = cachedProjectsHolder.get();
final Optional<ProjectReport> projectReportHolder = projects.stream()
.filter(p -> project.getArtifactId().equals(p.getArtifactId())
&& project.getGroupId().equals(p.getGroupId()))
.findFirst();
if (!projectReportHolder.isPresent()) {
return Optional.empty();
}
final ProjectReport projectReport = projectReportHolder.get();
String url;
if (projectReport.getUrl() != null) {
url = projectReport.getUrl();
LOGGER.info("Retrieving baseline buildinfo: {}", url);
} else {
url = getResourceUrl(
BUILDINFO_XML, project.getGroupId(), project.getArtifactId(), projectReport.getChecksum());
LOGGER.info("Baseline project record doesn't have url, trying default location {}", url);
}
try {
return getResourceContent(url).map(content -> new Build(xmlService.loadBuild(content), CacheSource.REMOTE));
} catch (Exception e) {
LOGGER.warn("Error restoring baseline build at url: {}, skipping diff", url, e);
return Optional.empty();
}
}