... если есть способ увеличить плагин основной версии
а не минорная версия.
В настоящее время, когда я на снимке версии 1.1.0, устанавливается следующая версия.
к 1.1.1-моментальному снимку, но в идеале я хотел бы изменить его на
1.2.0-снимок.
Что вы здесь описываете, так это то, что maven-release-plugin увеличивает вашу версию исправления, и вы хотите, чтобы дополнительная версия увеличивалась. Где версия x.y.z
означает [majorVersion].[minorVersion].[fixVersion]
.
Я решил это следующим образом:
- Создайте скрипт groovy, который будет выбирать версию из вашего
pom.xml
, увеличивая его, как вы объясняете, и устанавливая developmentVersion
и releaseVersion
в качестве параметров строки Гудзона.
- Создать работу на Гудзоне
- Поместите скрипт Groovy в рабочее пространство вашей работы
- В задании задайте шаг сборки «Выполнить системный скрипт Groovy» - укажите путь к скрипту Groovy
- В задании задайте шаг сборки «Вызовите цели Maven верхнего уровня» и вызовите команду освобождения maven со свойствами
developmentVersion
и releaseVersion
.
Шаг 1:
import hudson.model.*
createReleaseAndDevelopmentVersions ();
def createReleaseAndDevelopmentVersions () {
def POM_LOCATION = build.parent.builds[0].properties.get("envVars")['WORKSPACE'] + "/pom.xml";
def SNAPSHOT_PART = "-SNAPSHOT";
def projectVersion = findOutCurrentVersion(POM_LOCATION);
def versionParts = projectVersion.tokenize('.');
def mayorVersionPart = versionParts[0];
def minorVersionPart = versionParts[1];
def fixVersionPart = versionParts[2];
def snapshotPartIndex = fixVersionPart.indexOf(SNAPSHOT_PART);
boolean hasSnapshotPart = snapshotPartIndex != -1;
if (hasSnapshotPart) {
fixVersionPart = fixVersionPart.substring(0, snapshotPartIndex);
}
int minorVersion = minorVersionPart.toInteger();
int fixVersion = fixVersionPart.toInteger();
def newFixVersion = 0;
def newMinorRelVersion;
def newMinorDevVersion;
if (hasSnapshotPart) {
newMinorRelVersion = minorVersion;
newMinorDevVersion = minorVersion + 1;
} else {
//TODO: either throw an exception here or change the newMinorRelVersion newMinorDevVersion appropriately to suite your use-cases:
//throw new IllegalArgumentException("The pom at location " + POM_LOCATION + " contains the version " + projectVersion + " which is not a snapshot version (missing " + SNAPSHOT_PART + "). This is a released version and nothing should happen to it!");
}
def releaseVersion = mayorVersionPart + "." + newMinorRelVersion + "." + newFixVersion;
def developmentVersion = mayorVersionPart + "." + newMinorDevVersion + "." + newFixVersion + SNAPSHOT_PART;
createJenkinsVariablesAndAddToCurrentJob(releaseVersion, developmentVersion);
}
def findOutCurrentVersion (POM_LOCATION) {
def thr = Thread.currentThread()
def build = thr?.executable
def projectVersionParam = "projectVersion"
def resolver = build.buildVariableResolver
def projectVersionParamValue = resolver.resolve(projectVersionParam)
return projectVersionParamValue
}
def createJenkinsVariablesAndAddToCurrentJob (releaseVersion, developmentVersion) {
def pa = new ParametersAction([
new StringParameterValue("releaseVersion", releaseVersion), new StringParameterValue("developmentVersion", developmentVersion)
])
Thread.currentThread().executable.addAction(pa)
}
Шаг 5 (команда maven):
clean release:clean release:prepare release:perform -DreleaseVersion=${releaseVersion} -DdevelopmentVersion=${developmentVersion}
Приветствия
Деспот