Java 在Wildfly中将第三方库定义为模块,而不包括其依赖项
我正在使用相当标准的堆栈(Java8、JAX-RS、Hibernate等)为Wildfly 9开发一个web应用程序 现在我必须使用一个第三方库,它对Log4j版本的库有各种依赖关系。因为我不想分析这些依赖关系是否与当前web应用中的库兼容,我认为在Wildfly中定义一个模块是个好主意。差不多Java 在Wildfly中将第三方库定义为模块,而不包括其依赖项,java,wildfly,dependency-management,modularity,jboss-modules,Java,Wildfly,Dependency Management,Modularity,Jboss Modules,我正在使用相当标准的堆栈(Java8、JAX-RS、Hibernate等)为Wildfly 9开发一个web应用程序 现在我必须使用一个第三方库,它对Log4j版本的库有各种依赖关系。因为我不想分析这些依赖关系是否与当前web应用中的库兼容,我认为在Wildfly中定义一个模块是个好主意。差不多 <?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.0" name="foo.md">
<?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重量级)方法,这将需要对应用程序进行更多更改或等待Jigsaw
这是一种有效的方法吗?这似乎是一种可能的解决方案。这里描述了一个有趣的例子,但是。。。问题是关于可移植性。。。