in doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java [826:932]
private File resolveSiteDescriptor(
MavenProject project,
RepositorySystemSession repoSession,
List<RemoteRepository> remoteProjectRepositories,
Locale locale)
throws ArtifactResolutionException {
String variant = locale.getVariant();
String country = locale.getCountry();
String language = locale.getLanguage();
String localeStr = null;
File siteDescriptor = null;
boolean found = false;
if (!variant.isEmpty()) {
localeStr = language + "_" + country + "_" + variant;
ArtifactRequest request =
createSiteDescriptorArtifactRequest(project, localeStr, remoteProjectRepositories);
deletePseudoSiteDescriptorMarkerFile(repoSession, request);
try {
ArtifactResult result = repositorySystem.resolveArtifact(repoSession, request);
siteDescriptor = result.getArtifact().getFile();
found = true;
} catch (ArtifactResolutionException e) {
// This is a workaround for MNG-7758/MRESOLVER-335
if (e.getResult().getExceptions().stream().anyMatch(re -> re instanceof ArtifactNotFoundException)) {
LOGGER.debug("No site descriptor found for '" + project.getId() + "' for locale '" + localeStr
+ "', trying without variant...");
} else {
throw e;
}
}
}
if (!found && !country.isEmpty()) {
localeStr = language + "_" + country;
ArtifactRequest request =
createSiteDescriptorArtifactRequest(project, localeStr, remoteProjectRepositories);
deletePseudoSiteDescriptorMarkerFile(repoSession, request);
try {
ArtifactResult result = repositorySystem.resolveArtifact(repoSession, request);
siteDescriptor = result.getArtifact().getFile();
found = true;
} catch (ArtifactResolutionException e) {
// This is a workaround for MNG-7758/MRESOLVER-335
if (e.getResult().getExceptions().stream().anyMatch(re -> re instanceof ArtifactNotFoundException)) {
LOGGER.debug("No site descriptor found for '" + project.getId() + "' for locale '" + localeStr
+ "', trying without country...");
} else {
throw e;
}
}
}
if (!found && !language.isEmpty()) {
localeStr = language;
ArtifactRequest request =
createSiteDescriptorArtifactRequest(project, localeStr, remoteProjectRepositories);
deletePseudoSiteDescriptorMarkerFile(repoSession, request);
try {
ArtifactResult result = repositorySystem.resolveArtifact(repoSession, request);
siteDescriptor = result.getArtifact().getFile();
found = true;
} catch (ArtifactResolutionException e) {
// This is a workaround for MNG-7758/MRESOLVER-335
if (e.getResult().getExceptions().stream().anyMatch(re -> re instanceof ArtifactNotFoundException)) {
LOGGER.debug("No site descriptor found for '" + project.getId() + "' for locale '" + localeStr
+ "', trying without language (default locale)...");
} else {
throw e;
}
}
}
if (!found) {
localeStr = SiteTool.DEFAULT_LOCALE.toString();
ArtifactRequest request =
createSiteDescriptorArtifactRequest(project, localeStr, remoteProjectRepositories);
deletePseudoSiteDescriptorMarkerFile(repoSession, request);
try {
ArtifactResult result = repositorySystem.resolveArtifact(repoSession, request);
siteDescriptor = result.getArtifact().getFile();
} catch (ArtifactResolutionException e) {
// This is a workaround for MNG-7758/MRESOLVER-335
if (e.getResult().getExceptions().stream().anyMatch(re -> re instanceof ArtifactNotFoundException)) {
LOGGER.debug("No site descriptor found for '" + project.getId() + "' with default locale");
return null;
}
throw e;
}
}
return siteDescriptor;
}