Jakarta ee 轻战和全球可用的图书馆

Jakarta ee 轻战和全球可用的图书馆,jakarta-ee,maven,jboss,jboss7.x,war,Jakarta Ee,Maven,Jboss,Jboss7.x,War,我开始使用JBoss7.1 QuickStart的体系结构构建我的web应用程序 我喜欢它,但现在我需要向我的项目添加一些库,所以我向pom.xml添加了几个依赖项。例如,这适用于JasperReports: <dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports</artifactId>

我开始使用JBoss7.1 QuickStart的体系结构构建我的web应用程序

我喜欢它,但现在我需要向我的项目添加一些库,所以我向pom.xml添加了几个依赖项。例如,这适用于JasperReports:

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

net.sf.jasperreports
jasperreports
5.0.0
等等,对于其他图书馆。不幸的是,在构建我的项目之后,我注意到“mvn包”产生的war大小是。。。。36MB?!?太多了,我得把它上传到远程服务器上,快点

庞大的内容都存储在/WEB-INF/lib中,实际上是一组JAR(我作为依赖项包含的库)

在我的战争中不必每次都包含不必要的有效载荷的最佳实践是什么


我想我应该在JBoss环境的某个地方包含JAR,并以不同的方式声明maven依赖项,也许。。。但是怎么做呢?

您可以使用Jboss作为7个模块系统,将一些依赖性作为Jboss模块从战争中移除

pom.xml
文件中,您应该为模块化jar添加一个
scope
元素,并将
作为值提供(应该已经存在于JavaEE依赖项中)。这将告诉maven,jar将由环境提供,无需将它们投入战争


这项技术将使您的战争更加轻松,但您将失去对运行时依赖项的maven管理。您必须确保将要部署应用程序的所有服务器上都有正确的版本。

谢谢,但您对模块的定义是什么?我是否需要创建一个只包含库依赖项的新项目,并将其作为依赖项添加到主应用程序项目中?JBoss模块是JBoss处理应用程序服务器不同部分(内部、外部)的调用加载隔离的新方法,以防止类加载问题。要创建模块,需要将jar和正确的xml文件放在一个特定的文件夹中。在JBoss部署xml文件中,您的war WEBINF需要引用该模块。你可以在我的帖子中找到的链接中解释每一件事。你可以看看这个问题,它有更详细的答案: