7

在我的 android 项目的 POM.xml 文件中,我创建了六个配置文件。我从命令行运行这些,例如 mvn clean install -P mdpi。这工作正常。现在我将 jenkins 用于我的 CI。我希望向用户显示所有配置文件的下拉列表,然后使用mvn clean install -P ${selected-profile}${selected-profile}变量包含构建的配置文件。我怎样才能做到这一点?

4

2 回答 2

16

我建议您安装参数化构建插件,它允许您向工作用户显示选项列表。要启用它,您必须检查“此构建已参数化”选项,然后定义选项。

为了能够定义列表选项,您必须安装扩展选项参数插件,该插件通过添加列表选项(和其他参数类型)来扩展第一个选项。

然后,您将能够定义 PROFILE 列表选项。选择的选项名称将存储在参数名称中。

然后,maven cmdline: 'mvn clean install -P${PROFILE}' 将按预期工作。

我希望这有帮助!

于 2014-09-22T21:33:24.970 回答
0

我已将以下内容添加到我的 Jenkins 文件中:

pipeline {
agent {
    label 'common'
}
tools {
    maven 'Maven-3.5.4'
}
stages {
    stage('Build and Publish') {
        when {
            anyOf {
                buildingTag();
                branch 'master';
                branch 'develop';
                branch 'release/**';
            }
        }
        steps {
            script {
                def server = Artifactory.server 'test-artifactory'
                def rtMaven = Artifactory.newMavenBuild()
                def buildInfo
                //Set defualt profile
                def mvnProfile = 'dev'
                //Set the target mvn profile based on the current branch 
                if(env.BRANCH_NAME.equals('master')){
                    mvnProfile = 'prod'
                 }else if(env.BRANCH_NAME.startsWith('release/')){
                    mvnProfile = 'test'
                }

                rtMaven.tool = "Maven-3.5.4"
                // Set Artifactory repositories for dependencies resolution and artifacts deployment.
                rtMaven.deployer releaseRepo:'libs-release-local', snapshotRepo:'libs-snapshot-local', server: server

                buildInfo = rtMaven.run pom: 'pom.xml', goals: 'clean install -Dmaven.test.skip=true -P' + mvnProfile
                server.publishBuildInfo buildInfo
            }
        }
    }

}

}

我在脚本中添加了以下条件 if 来设置目标 mvn 配置文件:

//Set defualt profile
def mvnProfile = 'dev'
//Set the target mvn profile based on the current branch 
if(env.BRANCH_NAME.equals('master')){
    mvnProfile = 'prod'
}else if(env.BRANCH_NAME.startsWith('release/')){
    mvnProfile = 'test'
}
于 2020-05-06T12:45:56.447 回答