在不重建的情况下部署maven工件
我们正在使用声明性管道,最新的Jenkins。构建在docker从属容器中执行,该容器包含maven和其他工具。我们当前的Jenkins文件类似于此:在不重建的情况下部署maven工件,maven,jenkins-pipeline,Maven,Jenkins Pipeline,我们正在使用声明性管道,最新的Jenkins。构建在docker从属容器中执行,该容器包含maven和其他工具。我们当前的Jenkins文件类似于此: stage('build') { steps { sh 'mvn clean install'} } stage('test') { /* functional tests using a different tool */ } stage('publish') { steps { // mvn clean deploy -
stage('build') { steps { sh 'mvn clean install'} }
stage('test') { /* functional tests using a different tool */ }
stage('publish') {
steps {
// mvn clean deploy -DskipTests -DaltDeploymentRepository... (rebuilds, which we want to avoid, as its a multimodule project)
// withMaven(options:[artifactsPublisher()] { } ... (from maven-pipeline-plugin)
}
}
Jenkins classic mode有一个Maven集成插件,该插件提供了一个“将工件部署到Maven存储库”部分,该部分使用Maven重新部署Publisher仅发布工件。我正在寻找一个类似的管道,我认为maven管道插件可以做到这一点,但找不到一个例子。感谢任何指点 我无意中发现你的问题是在寻找同样的东西,而对我有效的是:
stage('Deploy') {
sh "'${mvnHome}/bin/mvn' war:war deploy:deploy"
}
当然,您需要将war:war更改为要部署的工件的类型(因此
jar:jar
或ear:ear
)。我发现这是基于,但它似乎与maven-war-plugin
以及maven-jar-plugin
有关,尽管在war
目标中没有选项。您面临的问题是,在使用deploy
的情况下,maven生命周期会运行所有步骤,其中包括安装
阶段……问题是您正在使用哪种工具进行功能测试?为什么不使用Maven的集成测试阶段?@khmarbaise是的,安装阶段是我们想要避免的。功能测试也是基于mvn的,但由于其他原因,必须独立于编译运行。@vasya10您解决了问题吗?@filip不是我们想要的方式。我们继续使用mvn clean deploy命令并跳过测试,是的,它会重新生成,但会正确发布?您将如何部署(不重建)多模块项目的所有工件(JAR、zip等)?恐怕这不适用于多模块项目。我的建议是在mvn干净安装
之后使用mvn部署-DskipTests
(无clean
阶段)。