Kotlin 詹金斯与科特林共享图书馆

Kotlin 詹金斯与科特林共享图书馆,kotlin,jenkins,jenkins-groovy,jenkins-shared-libraries,Kotlin,Jenkins,Jenkins Groovy,Jenkins Shared Libraries,我必须在groovy编写的共享库中添加一些kotlin编写的类,以便在jenkins管道中使用它。但是,这些类不可用: WorkflowScript: 19: unable to resolve class package.name.KotlinClass 我对groovy类没有同样的问题。我认为问题在于我没有声明任何任务,比如compileKotlin,但是我应该在哪里声明它呢?是什么驱动了从共享插件库构建源代码,并且这个过程是可配置的?如果我正确理解了这个问题,那么您在Jenkins中有一

我必须在groovy编写的共享库中添加一些kotlin编写的类,以便在jenkins管道中使用它。但是,这些类不可用:

WorkflowScript: 19: unable to resolve class package.name.KotlinClass

我对groovy类没有同样的问题。我认为问题在于我没有声明任何任务,比如
compileKotlin
,但是我应该在哪里声明它呢?是什么驱动了从共享插件库构建源代码,并且这个过程是可配置的?

如果我正确理解了这个问题,那么您在Jenkins中有一个共享库,管道可以利用它。在该共享库中,您希望groovy调用从kotlin编译的类

实现这一点的最佳方法是使用单独的流程编译kotlin并将JAR发布到maven存储库中。完成后,groovy共享库可以使用
@Grab
获取JAR。这包括在以下内容中,并广泛适用于:

@Grab('org.apache.commons:commons-math3:3.4.1')
import org.apache.commons.math3.primes.Primes
void parallelize(int count) {
  if (!Primes.isPrime(count)) {
    error "${count} was not prime"
  }
  // …
}
如果您想从自己的私有maven存储库(而不是maven Central)解析该JAR,还可以添加
@grabsolver
注释,如本文所述

您在这里遇到的一个问题是,您无法将凭据添加到
@grabsolver
中,而且我不知道如何将凭据添加到groovy沙箱中,以使Jenkins共享库能够工作

正如Jenkins自己的文档所暗示的,另一种方法是将所需的功能构建到它自己的可执行文件中,并确保可执行文件在调用Jenkins共享库的构建过程中可用

@GrabResolver(name='restlet', root='http://maven.restlet.org/')
@Grab('org.apache.commons:commons-math3:3.4.1')