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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法解析类org.yaml.snakeyaml.Yaml @Grab('org.yaml:snakeyaml:1.17')Jenkins管道相关的知识,希望对你有一定的参考价值。

我无法在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]
答案

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函数>

以上是关于无法解析类org.yaml.snakeyaml.Yaml @Grab('org.yaml:snakeyaml:1.17')Jenkins管道的主要内容,如果未能解决你的问题,请参考以下文章

无法解析类 JunitAdapter

Android TabLayout 类无法解析

为啥 liquibase 无法解析 db.changelog 类路径?

JSON解析错误:无法构造类的实例

类模板无法解析的外部符号

类模板无法解析的外部符号