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