将Wildfly中的第三方库定义为模块而不包含其依赖项

时间:2016-02-11 15:45:52

标签: java wildfly dependency-management modularity jboss-modules

我正在使用一个非常标准的堆栈(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。

这是一种有效的方法吗?

0 个答案:

没有答案