我正在使用 eclipse 并使用 resteasy 开发一些服务,杰克逊作为 json 提供者:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>2.3.10.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
<version>2.3.10.Final</version>
<scope>provided</scope>
</dependency>
这些库实际上是通过 JBoss EAP 6.1+ runtime
提供给构建路径的。但是我必须通过自定义ObjectMapper
设置一些杰克逊特定的选项。为此,我添加了对杰克逊的另一个依赖:
<dependency>
<artifactId>jackson-mapper-asl</artifactId>
<groupId>org.codehaus.jackson</groupId>
<version>1.9.9</version>
<scope>provided</scope>
</dependency>
现在这破坏了我的 eclipse 构建,因为服务器运行时只包含 ee 库。当然,我可以更改范围,但这会导致工件包含在最终战争中,即使它已经打包为 jboss 模块。
将 JBoss 工具更新到 4.3 并添加src/main/webapp/WEB-INF/jboss-deployment-structure.xml
就可以了:
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.jboss.resteasy.resteasy-jackson-provider" export="true" />
<module name="org.codehaus.jackson.jackson-core-asl" export="true" />
<module name="org.codehaus.jackson.jackson-mapper-asl" export="true" />
</dependencies>
</deployment>
</jboss-deployment-structure>