通过 Maven 支持多个应用服务器

Support multiple application servers through Maven

我们有一个部署在 Wildfly 上的 Java Web 应用程序。然而,一位客户现在想要使用 WebSphere。我们发现 war 文件的 lib 文件夹中包含的 jar 文件在 Wildfly 和 WebSphere 之间需要略有不同 - WebSphere 不喜欢有一些库Wildfly 适用于(AS 提供的不同库?)。

我们希望尽可能将其自动化,尽管我认为可能 一些pom.xmlbuild.xml 中手动摆弄当需要为一个或另一个构建文件时。但是有没有一种好的、理智的方法来适当地过滤 jar 文件?我唯一能想到的是在 pom.xml 文件中使用 <exclusions>,但我不知道如何明智地控制它,如果我想为一个 AS 与另一个构建,除了评论一堆 <exclusions><scope> 出来了,这似乎不切实际。

是否可以通过 Maven 以几乎完全自动化的方式完成此操作?或者什么是最好的方法?

使用build profiles.

它们允许您 activate/deactivate POM 的一部分。所以你定义了一个配置文件 websphere 和一个配置文件 wildfly。您将供应商特定的依赖项放入配置文件中(您也可以将相同的依赖项放入每个具有不同排除项的配置文件中)。

然后您可以 activate/deactivate 从命令行、settings.xml 或通过给定文件的存在或不存在的配置文件。