Я хочу добавить следующую зависимость Maven в мой проект.
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
<version>2.9.9</version>
</dependency>
Эта зависимость зависит от следующих факторов:
com.fasterxml.jackson.core:jackson-annotations:2.9.0
com.fasterxml.jackson.core:jackson-core:2.9.9
com.fasterxml.jackson.core:jackson-databind:2.9.9
javax.servlet:javax.servlet-api:3.1.0
joda-time:joda-time:2.7
Затем я хочу развернуть свое приложение на сервере WildFly 8.2.1. Хотя моя конкретная зависимость не предоставляется сервером, его транзитивные зависимости (ниже modules/system/layers/base
).
com/fasterxml/jackson/core/jackson-annotations/main/jackson-annotations-2.4.1.jar
com/fasterxml/jackson/core/jackson-core/main/jackson-core-2.4.1.jar
com/fasterxml/jackson/core/jackson-databind/main/jackson-databind-2.4.1.jar
javax/servlet/api/main/jboss-servlet-api_3.1_spec-1.0.0.Final
org/joda/time/main/joda-time-1.6.2.jar
При запуске приложения появляется ошибка из-за зависимости databind
. Моя datatype
зависимость ссылается на поле в databind
, которое не появилось в версии 2.4.1
. Поэтому мне нужно получить зависимость databind
до 2.9.9
.
Идея 1: вручную включить зависимость
Я попытался вручную включить обновленную зависимость в pom следующим образом (надеясь, что она переопределит версию WildFly).
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9</version>
</dependency>
Результат: возникает та же ошибка.
Идея 2: исключить версию WildFly с помощью jboss-deploy-structure.xml
Я добавил src/main/webapp/WEB-INF/jboss-deployment-structure.xml
файл со следующим содержимым.
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="com.fasterxml.jackson.core.jackson-databind" />
</exclusions>
</deployment>
</jboss-deployment-structure>
Результат: возникает та же ошибка.
Идея 3: Изменить модуль WildFly
Я добавляю jackson-databind-2.9.9.jar
непосредственно в модуль WildFly и обновляю соответствующий module.xml
, чтобы использовать новый JAR.
Результат: Работает. Однако я не хочу этого делать, поскольку хочу, чтобы другие разработчики могли использовать новую установку WildFly без необходимости что-либо менять.
Идея 4: вернуться к предыдущей версии
Я возвращаю исходную зависимость в соответствие с версиями WildFly 2.4.1
следующим образом.
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
<version>2.4.1</version>
</dependency>
Результат: Работает. Тем не менее, куча уже существующего кода зависит от версии 2.9.9, поэтому я не хочу возвращаться назад в версии.
Почему WildFly игнорирует мои попытки переопределить его модуль? Возможно ли принудительное использование databind
версии 2.9.9
. Заранее спасибо за любую помощь.