Доброе время!Jenkins Maven Plugin: Classloading Feature
Наша команда использует Maven. Один из модулей проекта имеет плагин (Maven-JiBX-плагин), который требует (для нашего сценария использования) зависимость от фирменной баночке:
<plugin>
<groupId>org.jibx</groupId>
<artifactId>jibx-maven-plugin</artifactId>
<version>${jibx.version}</version>
<executions>
<execution>
<id>main-schemas</id>
<phase>generate-sources</phase>
<goals>
<goal>schema-codegen</goal>
</goals>
<configuration>
<schemaLocation>
...
</schemaLocation>
<includeSchemas>
...
</includeSchemas>
<customizations>
<customization>${basedir}/src/main/resources/customizations/customization.xml
</customization>
</customizations>
<verbose>true</verbose>
</configuration>
</execution>
<execution>
<id>bind</id>
<phase>process-classes</phase>
<goals>
<goal>bind</goal>
</goals>
<configuration>
<schemaBindingDirectory>
${basedir}/src/main/resources/bindings
</schemaBindingDirectory>
<includeSchemaBindings>
<includeSchemaBinding>*.xml</includeSchemaBinding>
</includeSchemaBindings>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>${project.parent.groupId}</groupId>
<artifactId>proprietary-jar</artifactId>
<version>${project.parent.version}</version>
</dependency>
</dependencies>
</plugin>
Проблема в том, когда мы строим проект локально (и даже из командной строки на удаленном компьютере, где jenkins istalled), все строит успешно, но когда наш экземпляр jenkins пытается его построить, сборка выходит из строя с таким сообщением: «Unable to find class 'class-name-from-the-proprietary-jar'
». Эта проблема возникла локально, прежде чем мы добавили зависимость плагина.
Похоже, что есть некоторая функция плагина jenkins maven, которая не разрешает зависимостей плагина или может быть какая-то известная особенность загрузки jenkins maven plugin (например, JiBX загружает проприетарные классы с такой конструкцией: SchemaRootBase.class.getClassLoader().loadClass(cname)
Таким образом, чтобы указать зависимость для плагина, необходимо предоставить знания для него о необходимых классах). Может ли кто-нибудь, пожалуйста, предложить обходное решение?
UPDATE: оказалось, что переменная JAVA_HOME экземпляра Дженкинс установлен в /usr/java/jdk1.7.0_25
, но в моей Maven-компилятора-плагин у меня есть <target>1.6</target>
. Может быть, проблема в версии 1.7 java?
Вы пробовали переехать из maven build в freestyle build? – radai
нет у меня нет. На самом деле наша команда не имеет доступа к jenkins - мы можем только проверять статусы сборки и видеть журналы ... – Dmitry
Я не думаю, что целевой параметр имеет к этому какое-либо отношение. я подозреваю, что вы действительно нашли проблему с поддержкой jenkins maven, но лучший способ проверить - попробовать переключить работу на фристайлную работу. можете ли вы, по крайней мере, попробовать точно такую же сборку на машине jenkins, работающей как пользователь jenkins? Кроме того, вы абсолютно уверены, что вы и дженкинс используете ту же версию maven? – radai