in maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModel.java [170:207]
public void setVersion(String version) {
Element versionElement = project.getChild("version", project.getNamespace());
String parentVersion;
Element parent = getParentElement();
if (parent != null) {
parentVersion = parent.getChildTextTrim("version", project.getNamespace());
} else {
parentVersion = null;
}
if (versionElement == null) {
// never add version when parent references CI friendly property
if (!(parentVersion != null && AbstractRewritePomsPhase.isCiFriendlyVersion(parentVersion))
&& !version.equals(parentVersion)) {
// we will add this after artifactId, since it was missing but different from the inherited version
Element artifactIdElement = project.getChild("artifactId", project.getNamespace());
int index = project.indexOf(artifactIdElement);
versionElement = new Element("version", project.getNamespace());
versionElement.setText(version);
project.addContent(index + 1, new Text("\n "));
project.addContent(index + 2, versionElement);
}
} else {
if (AbstractRewritePomsPhase.isCiFriendlyVersion(versionElement.getTextNormalize())) {
// try to rewrite property if CI friendly expression is used
String ciFriendlyPropertyName =
AbstractRewritePomsPhase.extractPropertyFromExpression(versionElement.getTextNormalize());
Properties properties = getProperties();
if (properties != null) {
properties.computeIfPresent(ciFriendlyPropertyName, (k, v) -> version);
}
} else {
JDomUtils.rewriteValue(versionElement, version);
}
}
}