Обновление Grails 2.2.0 вызывает несоответствие буферов протоколов

Мы находимся в процессе обновления нашего приложения grails 2.0.3 до grails 2.2.0 с groovy 2 и jdk 1.7. Однако мы обнаружили, что grails 2.2.0 поставляется с protobuf-java 2.4.1, что вызывает несоответствие с банкой, которую наше приложение использует для связи с серверной частью. Эта система использует protobuf-java 2.3.0. Таким образом, любая связь с этой системой терпит неудачу.

Мы попытались исключить protobuf-java с помощью тега excludes в BuildConfig.groovy следующим образом:

inherits("global") { excludes 'protobuf-java' }

Мы думали, что это исключит только версию 2.4.1, которую мы получили от Grails. Однако это, похоже, исключает все версии этого jar-файла, даже ту, которую мы получаем как транзитивную зависимость от используемого нами jar-файла. Если мы попытаемся использовать тег excludes, а затем включим protobuf-java в качестве зависимости в наш pom с версией 2.3.0, перезапуск приложения завершится ошибкой grails.

Мои вопросы:

  1. Есть ли способ исключить только конкретную версию protobuf-java jar (т.е. 2.4.1), используя jar excludes

  2. Исключает ли одна из унаследованных зависимостей Grails (в нашем случае protobuf java 2.4.1) и рекомендуется использовать более раннюю версию

Если исключение не вариант, есть ли другой лучший способ решить эту проблему


person mpandit    schedule 19.02.2013    source источник


Ответы (1)


У нас была аналогичная проблема с Grails 2.0.3 и библиотекой, загружающей protobuf-java 3.4.0. Мы обошли это, запустив войну вместо «grails run-app»:

$ grails -Dgrails.env=dev war && java -jar target/com.acme.app-2.3.0.war

В любом случае, функции перезагрузки классов плохо работают с этим проектом.

person David Tinker    schedule 07.09.2017