我正在使用一个非常标准的堆栈(Java 8,JAX-RS,Hibernate等)为Wildfly 9开发Web应用程序。
现在我必须使用第三方库,它对Log4j的库版本有各种依赖关系。因为我不想分析这些依赖项是否与当前web-app中的库兼容,我认为在Wildfly中定义一个模块是个好主意。像
这样的东西<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="foo.md">
<resources>
<resource-root path="foo-1.0.jar" />
<resource-root path="log4j-1.2.12" />
<resource-root path="concurrent-1.0.jar" />
<!-- etc -->
</resources>
</module>
然后我可以使用jboss-deployment-structure.xml
包含该模块<?xml version="1.0"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<dependencies>
<module name="foo.md" >
<imports>
<include path="foo" />
<exclude path="bar" />
</imports>
</module>
</dependencies>
</deployment>
这样,我可以隔离第三方库的依赖关系,并且不必分析它们是否与我的应用程序兼容,而不使用像OSGi那样的(imo heavy-weight)方法,这需要更多的更改应用程序或等待Jigsaw。
这是一种有效的方法吗?