首先,我刚刚接触Java,Groovy和Jenkins,请耐心等待;)如何在Groovy Jenkins管道中使用全局外部Java库中的方法?
我正在准备Jenkins服务器,并提供Pipeline支持以供将来在构建环境中使用。 我们使用一种特殊的内部脚本语言,为此我必须在java中编写一个包装器。没有选择只能在Groovy中完成这项工作,我们必须使用这种特殊语言。
我已经尝试了很多引用java lib到这个jenkins项目的方法,但都没有成功。 主要我已经使用https://github.com/jenkinsci/workflow-cps-global-lib-plugin的文档来实现这一点,但也尝试了几种搜索谷歌或计算器的方法。在文档之后,这应该是可能的。
为了测试目的,我减少了测试过程。
假设以下...
我在詹金斯一个多分支项目命名为“MultibranchTestProject01”。
的Jenkinsfile:
@Library('[email protected]')
def runStageCollect = true
if (runStageCollect)
{
stage("Collect")
{
helloWorld("Joe")
}
}
引用的库在全球范围内通过“全球管道图书馆在詹金斯设置引用但也明确这里澄清的事情。 它在git环境中托管,引用似乎工作。 这个库的文件结构:
/vars/helloWorld.groovy
package de.dcomp.prod
def call(name) {
def tt = new Test()
tt.testText()
}
/src/de/dcomp/prod/Test.groovy
package de.dcomp.prod
import de.dcomp.ftel.*
def testText()
{
def sRetVal = ""
echo "testText - START"
//sRetVal = ScriptRunner.GetStaticSampleText()
def oSR = new ScriptRunner()
sRetVal = oSR.GetInstanceSampleText()
echo "ReturnValue: ${sRetVal}"
}
我有所谓的Java LIB ScriptRunner-0.0.1-SNAPSHOT.jar。这个库有一个类:
package de.dcomp.ftel;
public class ScriptRunner
{
public String GetInstanceSampleText()
{
return "ScriptRunner.GetInstanceSampleText() called...";
}
public static String GetStaticSampleText()
{
return "ScriptRunner.GetStaticSampleText() called...";
}
}
我在引用和在独立的java项目中使用这个库没有问题。
从来就尝试了几种方式,包括它:
- 把jar文件到 'C:\用户\ cr.groovy \ LIB'
- 设置在测试Linux环境类路径。
- 使用插件“Pipeline:Classpath Steps”以不同的表示法将库添加到类路径中,例如'C:\ Users \ cr.groovy \ lib',C:/Users/cr/.groovy/lib','C:\ Users \ cr.groovy \ lib \ ScriptRunner-0.0.1-SNAPSHOT.jar',' C:/Users/cr/.groovy/lib/ScriptRunner-0.0.1-SNAPSHOT.jar','file:/// C:/Users/cr/.groovy/lib/ScriptRunner-0.0.1-SNAPSHOT.jar “
- 添加的lib到本地的仓库,每个@GrabResolver和@Grab引用,虽然这不是我想有解决方案
或动态加载有:
this.class.classLoader.rootLoader.addURL(new URL("file:///C:/Users/cr/.groovy/lib/ScriptRunner-0.0.1-SNAPSHOT.jar"));
def srClass = Class.forName("de.dcomp.ftel.ScriptRunner")
def sr = srClass.newInstance()
结果总是像这样。
groovy.lang.MissingPropertyException: No such property: ScriptRunner for class: de.dcomp.prod.Test
或本:
de/dcomp/prod/Test.groovy: 10: unable to resolve class ScriptRunner
@ line 10, column 12.
def oSR = new ScriptRunner()
错误消息总是指向的方向,这一进程不能找到Java库。如果我尝试使用其他一些库,例如来自Apache Commons。
我想避免将它作为插件写入,如果这是可能的话。
在此先感谢!
我正在尝试这个'@ Grab' https://github.com/jenkinsci/workflow-cps-global-lib-plugin/blob/master/README.md#using-third-party-libraries,但它会'工作 – Joan