Openshift с проблемой ломбока

Я создаю новое приложение с шаблоном openshift с wildfly 8, и все работает нормально.

После добавления библиотеки lombok:1.16.4 maven на сервере не компилируется, на моей локальной машине работает нормально.

Когда я запускаю mvn -e -Popenshift -DskipTests -X compile на машине openshift, мне говорят:

[DEBUG] Command line options:
[DEBUG] -d
/var/lib/openshift/ID/app-root/runtime/repo/target/classes
-classpath
/var/lib/openshift/ID/app-root/runtime/repo/target/classes:/var/lib/openshift/ID/.m2/repository/javax/javaee-api/7.0/javaee-api-7.0.jar:/var/lib/openshift/ID/.m2/repository/com/sun/mail/javax.mail/1.5.0/javax.mail-1.5.0.jar:/var/lib/openshift/ID/.m2/repository/javax/activation/activation/1.1/activation-1.1.jar:/var/lib/openshift/ID/.m2/repository/org/projectlombok/lombok/1.16.4/lombok-1.16.4.jar:/var/lib/openshift/ID/.m2/repository/org/torpedoquery/org.torpedoquery/1.7.0/org.torpedoquery-1.7.0.jar:/var/lib/openshift/ID/.m2/repository/org/javassist/javassist/3.18.0-GA/javassist-3.18.0-GA.jar:/var/lib/openshift/ID/.m2/repository/org/eclipse/persistence/javax.persistence/2.0.0/javax.persistence-2.0.0.jar:/var/lib/openshift/ID/.m2/repository/org/objenesis/objenesis/1.3/objenesis-1.3.jar:/var/lib/openshift/ID/.m2/repository/com/google/guava/guava/11.0.2/guava-11.0.2.jar:/var/lib/openshift/ID/.m2/repository/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar:/var/lib/openshift/ID/.m2/repository/org/apache/commons/commons-lang3/3.0/commons-lang3-3.0.jar:
-sourcepath
/var/lib/openshift/ID/app-root/runtime/repo/src/main/java:
ALL_MY_CLASSES
-s /var/lib/openshift/ID/app-root/runtime/repo/target/generated-sources/annotations
-g -nowarn -target 1.8 -source 1.8 -encoding UTF-8

И ошибка компиляции, проблема в том, что когда я запускаю

javac $ALL_ARGUMENTS_FROM_MAVEN_DEBUG_INFO (from the -d) 

Он работает нормально, и сообщение javac о ручной компиляции mvn compile не сообщает о проблемах (до тех пор, пока не будет выполнен clean или файл не будет изменен).

Проверяю переменные в окружении и ничего плохого не вижу, вот отличия:

  • mvn: локальный (3.2.3) удаленный (3.0.4)
  • ОС: локальная (amd64) удаленная (i386)
  • ОС.версия: локальная (3.16) удаленная (2.6)
  • оба используют OpenJDK
  • эфир: локальный (org.eclipse.aether) удаленный (org.sonatype.aether)

Кроме того, если я удалю часть lombok в пути к классам при запуске команды javac, я получу ту же ошибку от maven.

В чем может быть разница между окружением, которое заставляет maven из openshift игнорировать ломбок?

Вот ссылка на две компиляции (с выводом отладки)


person Arturo Volpe    schedule 02.07.2015    source источник
comment
Я предполагаю, что Maven не игнорирует ломбок, а скорее не может его правильно использовать. Возможная причина в том, что на сервере есть дополнительная зависимость от lombok, которая загружается неправильно.   -  person Tim Biegeleisen    schedule 02.07.2015
comment
Сравните все зависимости на вашем локальном компьютере и на сервере. Я совершенно уверен, что вы увидите некоторые различия. Я не думаю, что различия в версиях Maven/JDK являются основной причиной вашей проблемы.   -  person Tim Biegeleisen    schedule 02.07.2015
comment
@TimBiegeleisen org.codehaus.plexus:plexus-compiler-javac отличается (1.8.1 в openshift и 2.2 на моей локальной машине), но я думаю, что это связано с версией maven. Проверьте обновление, пожалуйста.   -  person Arturo Volpe    schedule 02.07.2015


Ответы (1)


Проблема связана с maven-compiler-plugin, с последней версией работает везде, добавим в пом:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <compilerVersion>1.8</compilerVersion>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

Версия плагина в конфигурации по умолчанию в openshift слишком старая (2.3) и плохо работает с ломбоком.

person Arturo Volpe    schedule 02.07.2015