Maven项目中包含WildFly模块

时间:2019-06-28 18:50:50

标签: java maven jackson wildfly fasterxml

我想将以下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:使用jboss-deployment-structure.xml排除WildFly版本

我添加了一个具有以下内容的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:恢复为以前的版本

我将原始依赖关系恢复为与2.4.1的WildFly版本一致,如下所示。

<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。预先感谢您的帮助。

0 个答案:

没有答案