maven - 构建 SNAPSHOT 时不会触发依赖作业

标签 maven jenkins jenkins-pipeline jenkins-plugins

我有一个项目(B、C、D),它依赖于公共(public)项目(A)。 当 A 构建完成后,B、C、D 应该使用管道来触发。 所有构建均成功。

Project-A 正在生成一个 JAR,该 JAR 不会在本地 (~/.m2/...) 以外的任何地方发布

我通常使用 Jenkinsfiles,但现在我还直接在 Jenkins 中使用代码设置了最小的管道作业,同时尝试让触发工作。

下面是我为测试创建的最小管道作业。

对于所有项目,我都勾选了“每当构建 SNAPSHOT 依赖项时就构建”

在构建日志中我可以看到这两个项目的情况: [信息] [jenkins-event-spy] 生成/var/lib/jenkins/workspace/ProjectName@tmp/withMavend4286f3f/maven-spy-20190411-121907-5107444902202263660415.log

项目A管道

node{
  stage ('Build'){
      git branch: 'master', credentialsId: 'theID', url: '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="64030d1024030d100c11064a070b09" rel="noreferrer noopener nofollow">[email protected]</a>:ORG/PROJECT-A.git'
     withMaven(
        maven: 'Maven_3_6_0',
        jdk: 'Java1.8'

        ) {
          sh "mvn clean install"
    }
  }
}

项目B管道

node{
    stage ('Build'){
      git branch: 'master', credentialsId: 'theID', url: '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="baddd3cefaddd3ced2cfd894d9d5d7" rel="noreferrer noopener nofollow">[email protected]</a>:ORG/PROJECT-B.git'
     withMaven(
        maven: 'Maven_3_6_0',
        jdk: 'Java1.8'
        ) {
            sh "mvn clean install"
        }
    }
}

项目B pom.xml依赖声明

        <dependency>
            <groupId>com.myorg</groupId>
            <artifactId>projecta</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

我不知道每当 A 构建时,还需要什么才能触发项目 B。

最佳答案

请参阅Pipeline Maven Plugin FAQ > My downstream pipelines don't get triggered even if I use "Build whenever a SNAPSHOT dependency is built"

配置 Jenkins Pipeline Maven 集成以触发 mvn install 上的下游管道:

  • 更改全局配置:

    • 导航到“管理 Jenkins/全局工具配置”
    • 点击“添加发布者”并选择“Pipeline Graph 发布者”
    • 在“下游管道触发器”部分中,将“Maven 生命周期阈值”从“部署”更改为“安装” Pipeline Maven Plugin > Global Configuration > Trigger Downstream Pipelines > Maven lifecycle threshold
  • 或者在上游管道的脚本中,配置 withMaven(options: [pipelineGraphPublisher(lifecycleThreshold: 'install')]) {...}

也请不要忘记在下游管道(项目 B)上启用“每当构建 SNAPSHOT 依赖项时进行构建”(properties([pipelineTriggers([snapshotDependency()])]) )

关于maven - 构建 SNAPSHOT 时不会触发依赖作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55630677/

相关文章:

eclipse maven项目部署报错

mutex - 有没有办法让 Jenkins 的工作互斥?

python - 使用作业DSL通过groovy脚本执行python脚本

shell - 当搜索到的字符串不存在时,Jenkins shell 脚本返回退出代码 1

github - 将代码更改推送到 GitHub 时如何触发 Jenkins 多分支管道

maven - 如何在 maven-surefire-plugin 中指定测试和套件名称

maven - 从远程存储库安装 JAR (clojar)

java - 运行在 Jenkins 下运行 JVM 的批处理文件时的堆大小

jenkins - 如何使用 Jenkins 管道构建 docker 镜像?

java - 在一个简单的 Maven hibernate 项目中出现错误 "java.lang.NoClassDefFoundError: org/hibernate/cfg/Mappings"