2

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

我需要减小那个尺寸。谷歌搜索我发现使用模块可能是一种方式。

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

所以,我有,例如:

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

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

如何?

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

4

1 回答 1

6

将应用程序与其库分离对我来说听起来不是一个好主意 - 您正在显着增加应用程序的上下文依赖性,并且如果不先修补其内部结构,将无法在另一台服务器上部署应用程序。这在生产环境中可能是不可能的/不允许的。

A war32MB ......那又怎样?如今,多出几个 MB 并不是真正的问题。具有数百 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>

我建议将每个库部署在它自己的模块中(就像名字所暗示的那样;)模块化。然后,您可以单独交换它们。

于 2013-02-13T11:49:33.250 回答