如何减小ear文件的大小

How to reduce the size of ear file

添加了许多外部 jar 后,我的 EAR 文件的大小已达到约 100 MB。

环境:JavaSpring/Websphere应用程序server/Maven

请分享减小 EAR 文件大小的技巧。

似乎外部罐子对大尺寸的贡献最大。是否可以采用如下方法,如果可以,该怎么做?

  1. 使用大型 jar 的编译范围进行 Maven 构建
  2. 将大型 jar 保存在应用服务器库中,这样应用会在运行时从应用服务器获取这些 jar 吗?

谢谢 史密莎

要减小 War 尺寸,您可以考虑

  1. 静态内容:将图像等静态内容保留在 war 文件之外,并通过应用程序使用对位置的引用来引用它们。
  2. 共享库:如果大部分大小是由共享库贡献的,您可以将其从 war 中分离出来。为此,您可以将 war 库放在以下位置之一 a) 在 Server Lib 文件夹中,不推荐,因为不同的应用程序可能使用差异版本。 b) 在 Server App Lib 文件夹中 b) 在共享文件夹中并将该文件夹包含到 class 路径中。 c) 使用爆炸 war 部署仅部署更改。

你真的应该检查你的 jars,尤其是做得不好的 Maven 构建添加了很多不必要的 jars 到应用程序(比如 jta、servlet、jee-api 等),所以确保你不要有他们。有时 jars 在 EAR 中的每个 Web 模块中都是重复的。

第二个 WebSphere 是 Java EE 6 服务器,因此它提供了许多常见功能,如 JAX-WS、JAX-RS、JPA 等...,因此您应该考虑使用它们,然后再抛出所有作为您应用程序中的第三方库。

如果您想使用共享库方法,不要将 jar 放在服务器 lib 文件夹或服务器类路径中。不推荐这样做。
通过 Environment > Shared libraries 创建共享库,请参阅 here 并将它们分配给应用程序。