Search in sources :

Example 1 with Source

use of org.apache.maven.building.Source in project maven-git-versioning-extension by qoomon.

the class VersioningModelProcessor method provisionModel.

private Model provisionModel(Model model, Map<String, ?> options) throws IOException {
    try {
        if (!initialized) {
            initialize();
            initialized = true;
        }
        if (disabled) {
            return model;
        }
        // ---------------- provisioning ----------------
        Source pomSource = (Source) options.get(ModelProcessor.SOURCE);
        File pomFile = new File(pomSource != null ? pomSource.getLocation() : "");
        if (!isProjectPom(pomFile)) {
            // skip unrelated models
            logger.debug("skip unrelated model - source" + pomFile);
            return model;
        }
        GAV projectGav = GAV.of(model);
        // deduce version
        ProjectVersion projectVersion = deduceProjectVersion(projectGav, pomFile.getParentFile());
        // add properties
        if (projectVersion.getBranch() != null) {
            model.addProperty("project.branch", projectVersion.getBranch());
        }
        if (projectVersion.getTag() != null) {
            model.addProperty("project.tag", projectVersion.getTag());
        }
        model.addProperty("project.commit", projectVersion.getCommit());
        // update parent version
        if (model.getParent() != null) {
            File parentPomFile = new File(pomFile.getParentFile(), model.getParent().getRelativePath());
            GAV parentGav = GAV.of(model.getParent());
            if (parentPomFile.exists() && isProjectPom(parentPomFile)) {
                // check if parent pom file match project parent
                Model parentModel = ModelUtil.readModel(parentPomFile);
                GAV parentProjectGav = GAV.of(parentModel);
                if (parentProjectGav.equals(parentGav)) {
                    ProjectVersion parentProjectVersion = deduceProjectVersion(parentGav, parentPomFile.getParentFile());
                    logger.debug(projectGav + " adjust project parent version to " + parentProjectVersion);
                    model.getParent().setVersion(parentProjectVersion.getVersion());
                }
            }
        }
        // update project version
        if (model.getParent() == null || !model.getParent().getVersion().equals(projectVersion.getVersion())) {
            logger.debug(projectGav + " adjust project version to " + projectVersion);
            model.setVersion(projectVersion.getVersion());
        }
        // add plugin
        // has to be removed from model by plugin itself
        addBuildPlugin(model);
        return model;
    } catch (Exception e) {
        throw new IOException("Branch Versioning Model Processor", e);
    }
}
Also used : Model(org.apache.maven.model.Model) IOException(java.io.IOException) File(java.io.File) GAV(com.qoomon.maven.GAV) Source(org.apache.maven.building.Source) ModelParseException(org.apache.maven.model.io.ModelParseException) IOException(java.io.IOException)

Aggregations

GAV (com.qoomon.maven.GAV)1 File (java.io.File)1 IOException (java.io.IOException)1 Source (org.apache.maven.building.Source)1 Model (org.apache.maven.model.Model)1 ModelParseException (org.apache.maven.model.io.ModelParseException)1