Я пытаюсь добавить стороннюю библиотеку в один из моих кодов общей библиотеки конвейеров, следуя инструкциям «Расширение с помощью общей библиотеки»:
https://jenkins.io/doc/book/pipeline/shared-libraries
@GrabResolver(name='custom', root='http://my.nexus/maven')
@Grab("com.packageA.serviceA:artifactA:1.0.0")
import com.packageA.serviceA.ClassA
Это не удалось с классом IvySettings не найден.После следующего сообщения StackOverflow:
Получение класса не найдено: org.apache.ivy.core.report.ResolveReport при использовании GroovyClassLoader в Java
Мне пришлось добавить это вмой pom.xml:
<dependency>
<groupId>org.apache.ivy</groupId>
<artifactId>ivy</artifactId>
<version>2.4.0</version>
</dependency>
Я справился с проблемой IvySettings not found.Но все мои модульные тесты Spock для класса, для которого я добавляю @Grab, провалились с
java.lang.NoClassDefFoundError: com.mypackage.pipeline.client.MyClient
at java.lang.Class.forName(Class.java:348)
at net.sf.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:386)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:219)
at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
at net.sf.cglib.proxy.Enhancer.createClass(Enhancer.java:317)
at org.spockframework.mock.runtime.ProxyBasedMockFactory$CglibMockFactory.createMock(ProxyBasedMockFactory.java:91)
at org.spockframework.mock.runtime.ProxyBasedMockFactory.create(ProxyBasedMockFactory.java:49)
at org.spockframework.mock.runtime.GroovyMockFactory.create(GroovyMockFactory.java:66)
at org.spockframework.mock.runtime.CompositeMockFactory.create(CompositeMockFactory.java:44)
at org.spockframework.lang.SpecInternals.createMock(SpecInternals.java:45)
at org.spockframework.lang.SpecInternals.createMockImpl(SpecInternals.java:281)
at org.spockframework.lang.SpecInternals.GroovyMockImpl(SpecInternals.java:199)
at myRollbackTest.Missing object(myRollbackTest.groovy:184)
. В этих тестах используются GroovyMock и GroovySpy.
Кто-нибудь когда-нибудь заставлял Grab работать с GroovyMock / Spy из Спока?