部署maven工件而无需重建

vas*_*a10 11 maven jenkins-pipeline

我们正在使用声明性管道,最新的Jenkins.构建在docker slave容器中执行,该容器具有maven和其他工具.我们当前的Jenkinsfile类似于:

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)
    }
}
Run Code Online (Sandbox Code Playgroud)

Jenkins经典模式有一个Maven Integration插件,它提供了一个"部署工件到Maven存储库"的部分,它使用Maven RedeployPublisher只发布工件.我正在寻找相当于此的管道,我认为maven-pipeline-plugin可以做到这一点,但是找不到一个例子.任何指针赞赏!

bus*_*shi 5

我偶然发现你的问题在寻找同样的东西,对我有用的是:

stage('Deploy') {
    sh "'${mvnHome}/bin/mvn' war:war deploy:deploy"
}
Run Code Online (Sandbox Code Playgroud)

当然,您需要将 war:war 更改为您要部署的工件类型(sojar:jarear:ear)。我根据这个答案找到了这个,但它似乎与maven-war-plugin以及相关maven-jar-plugin,尽管目标中没有forceCreation选项war

  • 恐怕这不适用于多模块项目。我的建议是在“mvn clean install”之后使用“mvn deploy -DskipTests”(没有“clean”阶段)。 (3认同)
  • 这样你就只部署指定的工件?您将如何部署(无需重建)多模块项目的所有工件(jar、zip...)? (2认同)