有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

jenkins在管道作业中使用多个java版本

我们已经将ant jar文件升级到51,需要检测java版本11,但我们的旧应用程序仍然使用旧jar文件50,因此我们需要根据pull请求id检测java版本。这里我们将PR id作为参数

stage("abc"){
        steps{ 
        script{
      if (PR_ID == '100')
      tools{
        jdk 'java11.0.5'
      }
      else
    tools{
        jdk 'java8'
    fi
      }  

我正在尝试这种方法,但得到了类似java的错误。lang.NoSuchMethodError:在步骤[ArtifactoryGradleBuild、MavenDescriptorStep、addInteractivePromotion、archive、artifactoryDistributeBuild、artifactoryDownload、artifactoryEditProps]中未找到此类DSL方法“tools”

请帮助我如何使用if-else条件或任何其他条件根据PR id检测java版本


共 (1) 个答案

  1. # 1 楼答案

    一个tools块只允许在pipeline块或stage块内部,而不允许在script块内部

    我建议创建两个不同的阶段,并使用when选择要执行的阶段

    stage("abc-java11") {
      when {
        expression {
          return PR_ID == '100'
        }
      }
      
      tools {
        jdk 'java11.0.5'
      }
    
      steps {
        // Your steps
      }
    }
    
    stage("abc-java8") {
      when {
        expression {
          return PR_ID != '100'
        }
      }
     
      tools {
        jdk 'java8'
      }
    
      steps {
        // Your steps
      }
    }