JBoss 7项目库作为模块

Fab*_* B. 2 jboss module war maven jboss7.x

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

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

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

所以,我有,例如:

<dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>5.0.0</version>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

我想在该依赖项中添加" 提供 ",并将JAR保留在JBoss中,而不将其包含在我的战争中.

怎么样?

PS:我知道它将可用于所有已部署的应用程序.很好.

kos*_*tja 6

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

一个war32MB ......那又怎样?如今,额外的几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>
Run Code Online (Sandbox Code Playgroud)

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

如果你的模块有它自己的依赖项,你可以通过在module元素中添加这样的东西来宣布它们:

<dependencies>
    <module name="com.example.implementation"/>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

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