【问题标题】:How to change some java variables before deploying on a remote server?在远程服务器上部署之前如何更改一些 java 变量?
【发布时间】:2026-01-29 00:15:01
【问题描述】:

我目前正在构建一个 java web 应用程序(使用 netbeans)。 我使用 Jenkins 使用以下管道(针对 Jenkins)创建发布版本:

构建 -> 测试 -> 部署(到远程测试网络服务器)

构建和测试都可以,但我对部署作业有疑问。 部署作业目前正在获取我之前生成的 .war 文件,并将其简单地传输到远程 Web 服务器(使用“部署到容器”插件)。 但我想先更改我的 Web 应用程序的数据库参数! (为了使用另一个远程测试数据库)。 我很乐意使用 shell 命令修改 java 文件,但我不能,因为我的 .war 仅由已编译的 .class java 组成。

那么,在将 .war 文件部署到远程 Web 服务器之前,如何更改我的一些 Web 应用程序 Java 代码(用于数据库凭据)?

【问题讨论】:

  • 你不应该把配置数据放在代码中。将凭证移动到属性文件,并读取该文件以获取凭证。然后可以在不同环境中部署后编辑属性文件。这也避免了其他安全问题,例如证书在您的 SCS 中可见,以及开发人员需要知道生产密码。但这只是解决您当前问题的第一步,并且有多种解决方案。有关更多想法,请参阅How should an application store its credentials
  • 虽然您已经非常具体地在 Java 方面提出了您的问题,但由于更大的问题是如何将应用程序代码部署到不同的环境,我不确定它是否真的属于 SO。您可以尝试使用Information Security 站点。你的问题也很吸引人的意见,这可能会在此处脱离主题。

标签: maven tomcat jenkins jakarta-ee netbeans


【解决方案1】:

如果您有多个具有不同数据库的环境,那么处理此问题的最佳方法是使用命令行参数的应用程序。您可以修改您的 java 应用程序以读取命令行参数并在应用程序中使用这些参数。

例如--dburl = <database url> --dbusername= <db username>

另一种方法是从环境变量中获取这些参数。并在您部署应用程序的系统中定义这些变量。

【讨论】: