在我的Android项目的POM.xml文件中,我创建了六个配置文件。我从命令行运行这些,如mvn clean install -P mdpi。这很好用。现在我正在使用jenkins进行CI。我希望向用户显示所有配置文件的下拉列表,然后使用mvn clean install -P ${selected-profile}
,以便${selected-profile}
变量包含构建的配置文件。我怎么能这样做?
答案 0 :(得分:14)
我建议您安装parametrized build plugin,这样您就可以向作业用户显示选项列表。要启用它,您必须检查“此构建是否已参数化”#39;选项然后定义选项。
为了能够定义列表选项,您必须安装extended choice parameter plugin,通过添加列表选项(和其他参数类型)来扩展第一个选项。
然后,您就可以定义PROFILE列表选项。选定的选项名称将存储在参数名称中。
maven cmdline:' mvn clean install -P $ {PROFILE}'然后会像你期望的那样工作。
我希望这有帮助!
答案 1 :(得分: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
}
}
}
}
}
我在脚本中添加了以下条件来设置目标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'
}