open liberty 的 `server.xml` 不支持在 `application>` 的 `location` 属性中使用通配符(如 `*.war`

在 Open Liberty 中, 元素的 location 属性必须指向一个确切存在的、唯一的归档文件路径(例如 my-company-project-v1.2.war)。尝试使用 location="my-company-project-*.war" 会失败,并在日志中输出类似 CWWKZ0014W: The application ... could not be found at location ... 的警告——这是因为 Open Liberty 的部署机制在启动时仅执行字面量路径解析,不支持 glob 模式、正则表达式或任何通配语义。
✅ 正确实践:构建阶段标准化文件名
与其在部署配置中“适配多版本”,不如在构建阶段确保 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)的最佳实践。








