JBoss 7项目库作为模块

时间:2013-02-13 11:09:49

标签: maven jboss module jboss7.x war

我的项目的战争,在添加了一些maven依赖项后,大小增加到32MB!

我需要减小这个尺寸。 Gooogling我发现使用模块可能就是这样。

最佳做法是什么?将每个库添加为新模块?使用“所有库”创建模块?我甚至不知道这是否可能。

所以,我有,例如:

<dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>5.0.0</version>
        </dependency>

我想在该依赖项中添加“提供”,并将JAR保留在JBoss中,而不将其包括在我的战争中。

如何?

PS:我知道它可供所有已部署的应用程序使用。这很好。

1 个答案:

答案 0 :(得分:6)

将应用程序与它的库分开对我来说听起来不是一个好主意 - 你正在大大增加应用程序的上下文依赖性,并且无法在不修改它的内部构件的情况下将应用程序部署在另一台服务器上。在生产环境中可能无法/允许这样做。

32MB的war ......那又怎样?如今,额外的几MB不是一个真正的问题。一个商业应用程序与几个hunderd MB相比并不是那么罕见。

因此,在严厉警告之后,这就是如何做到的:

转到JBOSS_HOME/modules目录并为工件坐标创建目录层次结构(com.example依赖项将位于/ com / example /文件夹中)。

在此文件夹中,创建一个文件夹main

将库jar放入主文件夹。

创建一个module.xml文件并填写:

<module xmlns="urn:jboss:module:1.1" name="com.example">
    <resources>
        <resource-root path="mylib.jar"/>
    </resources>
</module>

我不确定是否需要重新启动服务器。

如果您的模块具有自己的依赖关系,您可以通过将这样的内容添加到module元素中来宣布它们:

<dependencies>
    <module name="com.example.implementation"/>
</dependencies>

我建议将每个库部署在它自己的模块中(如名称所示;)模块化。然后你可以单独交换它们。