Исключение модулей WildFly в проекте Maven - PullRequest
1 голос
/ 28 июня 2019

Я хочу добавить следующую зависимость Maven в мой проект.

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-joda</artifactId>
    <version>2.9.9</version>
</dependency>

Эта зависимость зависит от следующих факторов:

  1. com.fasterxml.jackson.core:jackson-annotations:2.9.0
  2. com.fasterxml.jackson.core:jackson-core:2.9.9
  3. com.fasterxml.jackson.core:jackson-databind:2.9.9
  4. javax.servlet:javax.servlet-api:3.1.0
  5. joda-time:joda-time:2.7

Затем я хочу развернуть свое приложение на сервере WildFly 8.2.1. Хотя моя конкретная зависимость не предоставляется сервером, его транзитивные зависимости (ниже modules/system/layers/base).

  1. com/fasterxml/jackson/core/jackson-annotations/main/jackson-annotations-2.4.1.jar
  2. com/fasterxml/jackson/core/jackson-core/main/jackson-core-2.4.1.jar
  3. com/fasterxml/jackson/core/jackson-databind/main/jackson-databind-2.4.1.jar
  4. javax/servlet/api/main/jboss-servlet-api_3.1_spec-1.0.0.Final
  5. 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. Заранее спасибо за любую помощь.

...