jenkins-pipeline-shared-libraries/vars/maven.groovy (160 lines of code) (raw):

import java.util.Properties import org.kie.jenkins.MavenCommand def runMaven(String goals, List options = [], Properties properties = null, String logFileName = null) { new MavenCommand(this) .withOptions(options) .withProperties(properties) .withLogFileName(logFileName) .run(goals) } def runMaven(String goals, boolean skipTests, List options = [], String logFileName = null) { new MavenCommand(this) .withOptions(options) .skipTests(skipTests) .withLogFileName(logFileName) .run(goals) } def runMavenWithSettings(String settingsXmlId, String goals, Properties properties, String logFileName = null) { configFileProvider([configFile(fileId: settingsXmlId, variable: 'MAVEN_SETTINGS_XML')]) { new MavenCommand(this, ['-fae']) .withSettingsXmlFile(MAVEN_SETTINGS_XML) .withProperties(properties) .withLogFileName(logFileName) .run(goals) } } def runMavenWithSettings(String settingsXmlId, String goals, boolean skipTests, String logFileName = null) { configFileProvider([configFile(fileId: settingsXmlId, variable: 'MAVEN_SETTINGS_XML')]) { new MavenCommand(this, ['-fae']) .withSettingsXmlFile(MAVEN_SETTINGS_XML) .skipTests(skipTests) .withLogFileName(logFileName) .run(goals) } } /** * * @param settingsXmlId settings.xml file * @param goals maven gals * @param sonarCloudId Jenkins token for SonarCloud* */ def runMavenWithSettingsSonar(String settingsXmlId, String goals, String sonarCloudId, String logFileName = null) { configFileProvider([configFile(fileId: settingsXmlId, variable: 'MAVEN_SETTINGS_XML')]) { withCredentials([string(credentialsId: sonarCloudId, variable: 'TOKEN')]) { new MavenCommand(this) .withSettingsXmlFile(MAVEN_SETTINGS_XML) .withProperty('sonar.login', "${TOKEN}") .withLogFileName(logFileName) .run(goals) } } } def mvnVersionsSet(String newVersion, boolean allowSnapshots = false) { mvnVersionsSet(new MavenCommand(this), newVersion, allowSnapshots) } def mvnVersionsSet(MavenCommand mvnCmd, String newVersion, boolean allowSnapshots = false, boolean processAllModules = true) { mvnCmd.clone() .withOptions(['-N', '-e']) .withProperty('full') .withProperty('newVersion', newVersion) .withProperty('allowSnapshots', allowSnapshots) .withProperty('processAllModules', processAllModules) .withProperty('generateBackupPoms', false) .run('versions:set') } def mvnVersionsUpdateParent(String newVersion, boolean allowSnapshots = false) { mvnVersionsUpdateParent(new MavenCommand(this), newVersion, allowSnapshots) } def mvnVersionsUpdateParent(MavenCommand mvnCmd, String newVersion, boolean allowSnapshots = false) { mvnCmd.clone() .withOptions(['-N', '-e']) .withProperty('full') .withProperty('parentVersion', "[${newVersion}]") .withProperty('allowSnapshots', allowSnapshots) .withProperty('generateBackupPoms', false) .run('versions:update-parent') } def mvnVersionsUpdateChildModules(boolean allowSnapshots = false) { mvnVersionsUpdateChildModules(new MavenCommand(this), allowSnapshots) } def mvnVersionsUpdateChildModules(MavenCommand mvnCmd, boolean allowSnapshots = false) { mvnCmd.clone() .withOptions(['-N', '-e']) .withProperty('full') .withProperty('allowSnapshots', allowSnapshots) .withProperty('generateBackupPoms', false) .run('versions:update-child-modules') } def mvnVersionsUpdateParentAndChildModules(String newVersion, boolean allowSnapshots = false) { mvnVersionsUpdateParentAndChildModules(new MavenCommand(this), newVersion, allowSnapshots) } def mvnVersionsUpdateParentAndChildModules(MavenCommand mvnCmd, String newVersion, boolean allowSnapshots = false) { mvnVersionsUpdateParent(mvnCmd, newVersion, allowSnapshots) mvnVersionsUpdateChildModules(mvnCmd, allowSnapshots) } def mvnGetVersionProperty(String property, String pomFile = 'pom.xml') { mvnGetVersionProperty(new MavenCommand(this), property, pomFile) } def mvnGetVersionProperty(MavenCommand mvnCmd, String property, String pomFile = 'pom.xml') { mvnCmd.clone() .withOptions(['-q', '-f', "${pomFile}"]) .withProperty('expression', property) .withProperty('forceStdout') .returnOutput() .run('help:evaluate') .trim() } def mvnSetVersionProperty(String property, String newVersion) { mvnSetVersionProperty(new MavenCommand(this), property, newVersion) } def mvnSetVersionProperty(MavenCommand mvnCmd, String property, String newVersion) { mvnCmd.clone() .withOptions(['-e']) .withProperty('property', property) .withProperty('newVersion', newVersion) .withProperty('allowSnapshots', true) .withProperty('generateBackupPoms', false) .run('versions:set-property') } def mvnCompareDependencies(String remotePom, String project = '', boolean updateDependencies = false, boolean updatePropertyVersions = false) { mvnCompareDependencies(new MavenCommand(this), remotePom, project, updateDependencies, updatePropertyVersions) } def mvnCompareDependencies(MavenCommand mvnCmd, String remotePom, String project = '', boolean updateDependencies = false, boolean updatePropertyVersions=false) { def newMvnCmd = mvnCmd.clone() .withProperty('remotePom', remotePom) .withProperty('updatePropertyVersions', updatePropertyVersions) .withProperty('updateDependencies', updateDependencies) .withProperty('generateBackupPoms', false) if(project) { newMvnCmd.withOptions(["-pl ${project}"]) } newMvnCmd.run('versions:compare-dependencies') } def uploadLocalArtifacts(String mvnUploadCredsId, String artifactDir, String repoUrl) { def zipFileName = 'artifacts' withCredentials([usernameColonPassword(credentialsId: mvnUploadCredsId, variable: 'kieUnpack')]) { dir(artifactDir) { sh "zip -r ${zipFileName} ." sh "curl --silent --upload-file ${zipFileName}.zip -u ${kieUnpack} -v ${repoUrl}" } } } def getLatestArtifactVersionFromRepository(String repositoryUrl, String groupId, String artifactId) { return getMavenMetadata(repositoryUrl, groupId, artifactId).versioning?.latest?.text() } def getLatestArtifactVersionPrefixFromRepository(String repositoryUrl, String groupId, String artifactId, String versionPrefix) { return getMavenMetadata(repositoryUrl, groupId, artifactId).versioning?.versions?.childNodes().collect{ it.text() }.findAll{ it.startsWith(versionPrefix) }.max() } def getMavenMetadata(String repositoryUrl, String groupId, String artifactId) { def groupIdArtifactId = "${groupId.replaceAll("\\.", "/")}/${artifactId}" return new XmlSlurper().parse("${repositoryUrl}/${groupIdArtifactId}/maven-metadata.xml") } String getProjectPomFromBuildCmd(String buildCmd) { def pom = "pom.xml" def fileOption = "-f" def projectPom = "pom.xml" regexF = "-f[ =]" regexFile = "--file[ =]" if (buildCmd =~ regexF || buildCmd =~ regexFile) { projectPom = buildCmd.substring(buildCmd.indexOf(fileOption), buildCmd.indexOf(pom) + pom.length()) projectPom = projectPom.split("=| ")[1] } return projectPom; } /* * Clean Maven repository on the node */ void cleanRepository() { sh 'rm -rf $HOME/.m2/repository' }