
open liberty 的 `server.xml` 不支持在 `application>` 的 `location` 属性中使用通配符(如 `*.war`),因为该属性要求精确匹配单个文件路径;若允许通配符,可能匹配多个 war 文件,导致部署歧义。推荐方案是构建时统一 war 文件名(如移除版本号),而非依赖运行时通配匹配。
在 Open Liberty 中,
✅ 正确实践:构建阶段标准化文件名
与其在部署配置中“适配多版本”,不如在构建阶段确保 WAR 文件名稳定。以 Maven 为例,可在 pom.xml 中通过
my-company-project
这样无论 pom.xml 中的
? 补充建议:
- 若需保留版本标识,可将其写入 WAR 内部的 MANIFEST.MF(如 Implementation-Version: 2.5.1)或通过 /actuator/info(Spring Boot)等运行时端点暴露,而非体现在文件名上;
- 使用 CI/CD 流水线时,可配合构建参数(如 -DfinalName=my-company-project)动态控制输出名;
- Open Liberty 本身支持自动部署(dropins/ 目录),但该机制同样不支持通配符扫描——它仅检测新增/变更的完整文件名。
总之,通配符在 location 中不可行,根本解法是构建时解耦版本号与文件名。这不仅提升部署稳定性,也符合云原生应用“构建一次、随处运行”(Build Once, Run Anywhere)的最佳实践。










