在管道中传递MAVEN_OPTS

时间:2017-12-05 14:43:17

标签: maven jenkins jenkins-pipeline

我试图将自由式作业转换为管道代码。以下是在" Invoke Artifactory Maven 3"" Invoke Artifactory Maven 3"下发布的MAVEN_OPTS以及maven目标。在工作中。

Maven目标:全新安装

MAVEN_OPTS:-Xmx2048m

-Xms512m

-XX:PermSize =256米

-XX:MaxPermSize参数=1024米

-Denv.build时间戳= $ {BUILD_TIMESTAMP}

-Denv.build作业= $ {JOB_NAME}

-Denv.build数= $ {BUILD_NUMBER}

-Denv.build-URL = $ {BUILD_URL}

-Denv.git提交= $ {GIT_COMMIT}

-Denv.git分支= $ {GIT_BRANCH}

我的试用版

node('node1') {

    def javaHome = tool name: 'JDK 1.8', type: 'hudson.model.JDK'
    def mvnHome = tool name: 'M3', type: 'hudson.tasks.Maven$MavenInstallation'
    sh "$mvnHome/bin/mvn -f pom.xml clean install -U -Dmaven.repo.local=$WORKSPACE/.m2/repository -Xmx2048m -Xms512m -XX:PermSize=256m -XX:MaxPermSize=1024m -Dtimestamp=${BUILD_TIMESTAMP} ..."

    }

Error:
Could not find metadata org.apache.maven.plugins/maven-metadata.xml in local

我确定我以错误的方式通过MAVEN_OPTS。有人可以指导我使用正确的systax来声明管道中的MAVEN_OPTS

2 个答案:

答案 0 :(得分:2)

设置环境变量MAVEN_OPTS,它将起作用。

pipeline {
    agent any
    tools {
        jdk 'JDK 1.8'
        maven 'M3'
    }
    environment {
        MAVEN_OPTS = ' -Denv.build-timestamp=${BUILD_TIMESTAMP} ...'
    }
    stage('Example') {
        steps {
            sh 'mvn clean install'
        }
    }
}

答案 1 :(得分:2)

您可以在管道mavenOpts中的withMaven来电中设置stage

node('node1') {

    stage ('MavenGoals') {  
        withMaven(jdk: 'JDK 1.8', maven: 'M3', mavenLocalRepo: '$WORKSPACE/.m2/repository', mavenOpts: '-Xmx2048m -Xms512m -XX:PermSize=256m ....') {      
            sh 'mvn clean install'    
        }
    }
}