在不重新运行整个构建的情况下运行maven deploy
我正在为一个maven项目开发一个多分支管道。我试图遵循Jenkins文档一直提到的标准CI步骤,即构建、测试和部署。但maven似乎不太擅长将这些作为谨慎的步骤 到目前为止,我有:在不重新运行整个构建的情况下运行maven deploy,maven,jenkins,jenkins-pipeline,Maven,Jenkins,Jenkins Pipeline,我正在为一个maven项目开发一个多分支管道。我试图遵循Jenkins文档一直提到的标准CI步骤,即构建、测试和部署。但maven似乎不太擅长将这些作为谨慎的步骤 到目前为止,我有: stages { stage('Test') { steps { sh "mvn -B clean verify" } } stage('Deploy') { when { branch 'mas
stages {
stage('Test') {
steps {
sh "mvn -B clean verify"
}
}
stage('Deploy') {
when {
branch 'master'
}
steps {
sh "mvn -B deploy"
}
}
}
这样,完整构建将运行两次,一次在Test
阶段,另一次在Deploy
阶段。这并不好,因为这是一个非常耗时的构建,这要感谢GoogleWebToolkit,但这是另一个问题
是否有一种方法可以优雅地跳过Deploy
阶段中较早的maven生命周期步骤并跳到部署目标
我能想到的唯一其他选择是
stages {
stage('Test') {
when {
// Some expression that states "not master"
}
steps {
sh "mvn -B clean verify"
}
}
stage('Test-and-Deploy') {
when {
branch 'master'
}
steps {
sh "mvn -B deploy"
}
}
}
我对此也不满意,因为这在Jenkins UI中是如何呈现的,而且将Jenkins文档所暗示的应该是3个阶段压缩为一个阶段感觉很奇怪。我认为这是一个较小的缺点,所以除非我能找到更好的方法,否则我可能会这样做。如果你真的喜欢遵循文档,那么你的步骤
测试也是错误的,因为在Maven中你编译、打包(jar/等等)然后你做单元测试,verify
还包括集成测试,如果在Maven build中定义了什么……我建议你通过mvn-B clean Deploy
进行Test Deploy
,在其他你只想运行测试的地方。另一方面,通过mvn-B clean verify
,你可以尝试在单独的deploy
步骤中仅使用mvn deploy:deploy
,但我建议不要仅为了遵循文档而单独使用这些步骤……做最适合的事情。这取决于“deploy”之前的生命周期阶段所做的事情。如果工件是在一个阶段创建的,并动态地添加到反应器中,那么你就不走运了。您可以尝试的是只执行部署目标,而不是执行“mvn部署:部署”阶段,这可能会得到您需要的结果。您最终得到了解决方案吗?我现在也遇到了同样的问题,这是一个典型的“正确的方法”案例,我觉得这是错误的,因为我知道这应该是一个阶段,但是我失去了以前UI的所有粒度。这只是maven是一个非常弱的工具的另一个例子。没有插件,依赖性解析是一种疯狂,依赖性:树与实际的LIB不匹配,如果您通过父级拥有DEP,则将其放入战争中,缺少增量构建,无法在不同命令中执行步骤,等等。。。。不过,中央回购非常棒。你也在寻找这个功能吗?这是maven感到恼火的另一个原因