无需重建即可部署 Maven 工件

问题描述 投票:0回答:2

我们正在使用声明式管道,最新的 Jenkins。构建在 docker 从属容器中执行,该容器具有 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)
    }
}

Jenkins 经典模式有一个 Maven 集成插件,它提供了“将工件部署到 Maven 存储库”部分,该部分使用 Maven RedeployPublisher 仅发布工件。我正在寻找与此等效的管道,我认为 maven-pipeline-plugin 可以做到这一点,但找不到示例。任何指点表示赞赏!

maven jenkins-pipeline
2个回答
5
投票

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

stage('Deploy') {
    sh "'${mvnHome}/bin/mvn' war:war deploy:deploy"
}

当然,您需要将 war:war 更改为您要部署的工件类型(因此

jar:jar
ear:ear
)。我是根据这个答案找到的,但它似乎与
maven-war-plugin
以及
maven-jar-plugin
相关,尽管war目标中没有
forceCreation
选项。


0
投票

答案很晚,但 Maven Deploy 插件实际上有一个专门针对此用例的目标:

deploy:deploy-file

它的存在是为了部署现有文件,而不需要任何重建。可以在此处找到文档。

示例用法(不过我没有测试):

mvn deploy:deploy-file -Durl=file:/path-to-your/repo/ -Dfile=your-artifact-1.0.jar 
                       -DgroupId=com.mycompany -DartifactId=my-artifact -Dpackaging=jar 
                       -Dversion=1.0 -DrepositoryId=your-repo-id
© www.soinside.com 2019 - 2024. All rights reserved.