private void unalignFromBaseDirectory()

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()));
    }