Запуск job-dsl-plugin с использованием jdk8 & groovy 2.4.4- java.lang.IncompatibleClassChangeError
Я использую плагин job-dsl для автоматизации создания рабочих мест jenkins. Ниже моя maven конфигурация.
<java.version>1.8</java.version>
<groovy.version>2.4.4</groovy.version>
<dsl.version>1.37</dsl.version>
<groovy.eclipse.compiler.version>2.9.101</groovy.eclipse.compiler.version>
<groovy.eclipse.batch.version>2.3.7-01</groovy.eclipse.batch.version>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<compilerId>groovy-eclipse-compiler</compilerId>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-compiler</artifactId>
<version>${groovy.eclipse.compiler.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-batch</artifactId>
<version>${groovy.eclipse.batch.version}</version>
</dependency>
</dependencies>
</plugin>
Я использую jdk8 & groovy-all 2.4.4,groovy-eclipse-compiler & Uber JAR генерируется с помощью плагина Shade. Для запуска моих сценариев я добавил дополнительный classpath (в процессе job-dsl / advanced-settings) как target / my-uber.jar.
Когда я запускаю свои тесты локально, все работает хорошо, но на Jenkins появляются следующие ошибки
java.lang.IncompatibleClassChangeError: the number of constructors during runtime and compile time for com.salesforce.dva.pipeline.generator.model.PkgType do not match. Expected -1 but got 2
at groovy.lang.MetaClassImpl.selectConstructorAndTransformArguments(MetaClassImpl.java:1413)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.selectConstructorAndTransformArguments(ScriptBytecodeAdapter.java:234)
Я попытался изменить отличные версии (на более старые) и установить JDK 7 и 6, но все они привели к одной и той же ошибке.
Как я могу исправить эту проблему?
1 ответ
Дженкинс использует Groovy 1.8.x, поэтому плагин Job DSL также использует Groovy 1.8.x. На данный момент это 1.8.9. Обновление до Groovy 2.x еще не завершено, см. JENKINS-21249. Рекомендуется использовать Groovy 1.8 для любого проекта Job DSL.
Поскольку Groovy 2.3 является первой версией, официально поддерживающей Java 8 (см. Примечания к выпуску для Groovy 2.3), рекомендуется использовать Java 7 для любого проекта Groovy 1.8.