无法解析类org.yaml.snakeyaml.Yaml @Grab('org.yaml:snakeyaml:1.17')Jenkins管道

时间:2019-11-19 05:13:07

标签: jenkins-pipeline jenkins-groovy

我无法在Jenkins管道中使用@Grab。在这里需要帮助。以下是错误。

     org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
    WorkflowScript: 1: unable to resolve class org.yaml.snakeyaml.Yaml
     @ line 1, column 1.
       @Grab('org.yaml:snakeyaml:1.17')
       ^

    1 error

以下是管道代码 test.groovy

@Grab('org.yaml:snakeyaml:1.17')
import org.yaml.snakeyaml.Yaml


node{
    stage('test'){
        Yaml parser = new Yaml()
        def a = """
---
environment: production
classes:
  nfs::server:
    exports:
      - /srv/share1
      - /srv/share3
parameters:"""
        parser.load(a)

        print(parser.load(a))
    }
}

错误在定义为“ SCM的管道脚本”的管道中发生,并且在定义“管道脚本”和脚本控制台中正常工作
以下代码可用于脚本控制台(管理Jenkins->脚本控制台)

@Grab('org.yaml:snakeyaml:1.17')
import org.yaml.snakeyaml.Yaml

  Yaml parser = new Yaml()
        def a = """
---
environment: production
classes:
  nfs::server:
    exports:
      - /srv/share1
      - /srv/share3
parameters:"""
        parser.load(a)

        print(parser.load(a))

输出

[environment:production, classes:[nfs::server:[exports:[/srv/share1, /srv/share3]]], parameters:null]

1 个答案:

答案 0 :(得分:0)

  

Groovy Grab使用Ivy管理jar的恢复。您需要添加Shared Groovy Libraries Plugin。默认情况下,它从maven central获取jar,但是您可以使用注释@GrabResolver指定其他存储库。 来自here

此外,您可以将jar文件添加到Jenkins主目录中的./.groovy/grapes/org.yaml/snakeyaml/jars/snakeyaml-1.17.jar

第二种情况不使用此库,而使用standard中的Pipeline Utility Steps readYaml writeYaml函数