... si hay una manera de hacer que el complemento incremente la versión principal en lugar de la versión secundaria.
Actualmente, cuando estoy en la versión 1.1.0 a la instantánea de la próxima versión se establece a 1.1.1 a la instantánea pero idealmente me gustaría que cambie a 1.2.0 a la instantánea.
Lo que está describiendo aquí es que maven-release-plugin está incrementando su versión de corrección y desea que la versión menor se incremente. Donde la versión x.y.z
significa [majorVersion].[minorVersion].[fixVersion]
.
La forma en que lo resolvió es de la siguiente manera:
- Crear el guión maravilloso que va a recoger la versión de su incremento
pom.xml
de la manera que usted está explicando y establezca el developmentVersion
y releaseVersion
como cadena Hudson parámetros.
- Crear un trabajo en Hudson
- Coloque el guión maravilloso en el espacio de trabajo de su trabajo
- En el trabajo establecer un "Ejecutar sistema de escritura maravilloso" construir paso - proporcionar la ruta al script Groovy
- En el conjunto de trabajos un paso de construcción "Invocar objetivos Maven de primer nivel" e invocar el comando de liberación de maven con las propiedades
developmentVersion
y releaseVersion
.
Paso 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)
}
Paso 5 (el comando experto):
clean release:clean release:prepare release:perform -DreleaseVersion=${releaseVersion} -DdevelopmentVersion=${developmentVersion}
Cheers,
Déspota
Gracias por su respuesta Zac. No quiero que solicite la versión, pero tampoco quiero tener que ir y cambiar el releaseVersion y la versión de desarrollo cada vez. Solo quiero ver si hay una manera de aumentar automáticamente la versión. Usar -DautoVesrionSubmodules aumenta la versión menor, pero necesito aumentar la versión principal. Quiero ir de 1.1.0 a 1.2.0 – Arya
@Arya en realidad '-DautoVersionSubmodules' no selecciona automáticamente la versión para usted. Solo se asegura de que la versión que se especifica se aplique a todos los módulos (de lo contrario, se le solicitará cada uno). Repito, "algo está eligiendo para ti". Si es maven, no creo que sea el complemento de lanzamiento. Sospecho que hay algo en su configuración de Hudson para hacerlo. –