in maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhase.java [293:374]
private void unalignFromBaseDirectory(Model releaseModel, File basedir) {
Model rawSuperModel = superPomProvider.getSuperModel(releaseModel.getModelVersion());
ModelBuildingRequest buildingRequest = new DefaultModelBuildingRequest();
buildingRequest.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_STRICT);
// inject proper values used by project.build.finalName
Properties properties = new Properties();
properties.put("project.version", releaseModel.getVersion());
properties.put("project.artifactId", releaseModel.getArtifactId());
buildingRequest.setUserProperties(properties);
Model interpolatedSuperModel =
modelInterpolator.interpolateModel(rawSuperModel.clone(), basedir, buildingRequest, null);
Build currentBuild = releaseModel.getBuild();
Build interpolatedSuperBuild = interpolatedSuperModel.getBuild();
Build rawSuperBuild = rawSuperModel.getBuild();
currentBuild.setSourceDirectory(resolvePath(
basedir.toPath(),
currentBuild.getSourceDirectory(),
interpolatedSuperBuild.getSourceDirectory(),
rawSuperBuild.getSourceDirectory()));
currentBuild.setScriptSourceDirectory(resolvePath(
basedir.toPath(),
currentBuild.getScriptSourceDirectory(),
interpolatedSuperBuild.getScriptSourceDirectory(),
rawSuperBuild.getScriptSourceDirectory()));
currentBuild.setTestSourceDirectory(resolvePath(
basedir.toPath(),
currentBuild.getTestSourceDirectory(),
interpolatedSuperBuild.getTestSourceDirectory(),
rawSuperBuild.getTestSourceDirectory()));
currentBuild.setOutputDirectory(resolvePath(
basedir.toPath(),
currentBuild.getOutputDirectory(),
interpolatedSuperBuild.getOutputDirectory(),
rawSuperBuild.getOutputDirectory()));
currentBuild.setTestOutputDirectory(resolvePath(
basedir.toPath(),
currentBuild.getTestOutputDirectory(),
interpolatedSuperBuild.getTestOutputDirectory(),
rawSuperBuild.getTestOutputDirectory()));
currentBuild.setDirectory(resolvePath(
basedir.toPath(),
currentBuild.getDirectory(),
interpolatedSuperBuild.getDirectory(),
rawSuperBuild.getDirectory()));
for (Resource currentResource : currentBuild.getResources()) {
Map<String, String> superResourceDirectories =
new LinkedHashMap<>(interpolatedSuperBuild.getResources().size());
for (int i = 0; i < interpolatedSuperBuild.getResources().size(); i++) {
superResourceDirectories.put(
interpolatedSuperBuild.getResources().get(i).getDirectory(),
rawSuperBuild.getResources().get(i).getDirectory());
}
currentResource.setDirectory(
resolvePath(basedir.toPath(), currentResource.getDirectory(), superResourceDirectories));
}
for (Resource currentResource : currentBuild.getTestResources()) {
Map<String, String> superResourceDirectories = new LinkedHashMap<>(
interpolatedSuperBuild.getTestResources().size());
for (int i = 0; i < interpolatedSuperBuild.getTestResources().size(); i++) {
superResourceDirectories.put(
interpolatedSuperBuild.getTestResources().get(i).getDirectory(),
rawSuperBuild.getTestResources().get(i).getDirectory());
}
currentResource.setDirectory(
resolvePath(basedir.toPath(), currentResource.getDirectory(), superResourceDirectories));
}
releaseModel
.getReporting()
.setOutputDirectory(resolvePath(
basedir.toPath(),
releaseModel.getReporting().getOutputDirectory(),
interpolatedSuperModel.getReporting().getOutputDirectory(),
rawSuperModel.getReporting().getOutputDirectory()));
}