in doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java [490:546]
private void populateParentMenu(
SiteModel siteModel,
Locale locale,
MavenProject project,
MavenProject parentProject,
boolean keepInheritedRefs) {
Objects.requireNonNull(siteModel, "siteModel cannot be null");
Objects.requireNonNull(locale, "locale cannot be null");
Objects.requireNonNull(project, "project cannot be null");
Objects.requireNonNull(parentProject, "parentProject cannot be null");
Menu menu = siteModel.getMenuRef("parent");
if (menu == null) {
return;
}
if (keepInheritedRefs && menu.isInheritAsRef()) {
return;
}
String parentUrl = getDistMgmntSiteUrl(parentProject);
if (parentUrl != null) {
if (parentUrl.endsWith("/")) {
parentUrl += "index.html";
} else {
parentUrl += "/index.html";
}
parentUrl = getRelativePath(parentUrl, getDistMgmntSiteUrl(project));
} else {
// parent has no url, assume relative path is given by site structure
File parentBasedir = parentProject.getBasedir();
// First make sure that the parent is available on the file system
if (parentBasedir != null) {
// Try to find the relative path to the parent via the file system
String parentPath = parentBasedir.getAbsolutePath();
String projectPath = project.getBasedir().getAbsolutePath();
parentUrl = getRelativePath(parentPath, projectPath) + "/index.html";
}
}
// Only add the parent menu if we were able to find a URL for it
if (parentUrl == null) {
LOGGER.warn("Unable to find a URL to the parent project. The parent menu will NOT be added.");
} else {
if (menu.getName() == null) {
menu.setName(i18n.getString("site-tool", locale, "siteModel.menu.parentproject"));
}
MenuItem item = new MenuItem();
item.setName(parentProject.getName());
item.setHref(parentUrl);
menu.addItem(item);
}
}