【问题标题】:How to substitute the environment variable in the parameter defined in the .properties file如何替换 .properties 文件中定义的参数中的环境变量
【发布时间】:2022-01-12 05:40:17
【问题描述】:

我们有 2 个测试环境 qa1 和 qa2。根据我们在运行/调试配置中定义的内容,我们可以使用 qa1.properties 文件或 qa2.properties 文件。我们使用 Java、Selenium 和 IntelliJ IDEA IDE。 我在 qa2.properties 文件中定义了 ENV_NAME=qa2

在每个属性文件中,我们都定义了 URL。 作为 qa1.properties 文件中的示例,我们将拥有 LOGIN_URL=https://demo.testing.com/vp-clientlib-v1.php?env=qa1 以及我们将拥有的 qa2.properties 文件中的相同 URL LOGIN_URL=https://demo.testing.com/vp-clientlib-v1.php?env=qa2

如您所见,环境是硬编码的。我正在尝试替换 URL 中的 ENV_NAME,但到目前为止还没有成功。你能帮帮我吗?

【问题讨论】:

    标签: java intellij-idea properties


    【解决方案1】:

    请查看 Apache 配置。支持Variable Interpolation

    如果你想将 ENV_NAME 设置为 OS 环境变量 ENV_NAME=xyz 你的属性将被写成

    LOGIN_URL=https://demo.testing.com/vp-clientlib-v1.php?env=${env:ENV_NAME}
    

    如果你在属性文件中将ENV_NAME=xyz 设置为属性,那么你会写

    LOGIN_URL=https://demo.testing.com/vp-clientlib-v1.php?env=${ENV_NAME}
    

    除了这个 Apache 配置之外,还提供了许多其他很酷的东西来灵活定义属性。

    【讨论】:

    • 我的回答更准确一些,以便更切合您的问题。但正如已经建议的那样,花点时间阅读 Apache 配置文档。
    • 嗨 Stefan,非常感谢您的回复。我做了同样的事情,我在属性文件中将 ENV_HOME 声明为另一个属性。但它未能替换 URL 中的占位符,并且 URL 仍然是 LOGIN_URL=demo.testing.com/vp-clientlib-v1.php?env=${ENV_NAME}。我很想知道我们是否可以这样做,但从我在其他帖子中读到的内容来看,属性文件只是键值对中的字符串集合,并且没有直接的方法来替换属性文件中的属性值。如果我错了并且事实上可以这样做,我会很高兴
    【解决方案2】:

    谢谢@Stefan D。您的回复向我介绍了变量插值,我能够对其进行进一步研究。

    在属性文件中简单地添加变量 ENV_NAME=qa2 并没有帮助我替换 URLS 中的环境名称。进一步阅读后,我了解到不可能替代占位符。标准属性文件只是键值对。

    OscarRyz's answer helped me in figuring out how to do it.

    如果它可以帮助那些刚接触编码世界的人, 在加载和读取属性文件的类中,我声明了 私有 XProperties configFile = new XProperties();

    我为 XProperties 创建了另一个类,并从 GitHub XProperties 复制到代码中

    【讨论】:

    • 为什么不使用我帖子中建议的Apache Configuration
    猜你喜欢
    • 2012-05-06
    • 2011-07-13
    • 2021-08-01
    • 2016-02-02
    • 2018-07-04
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 2016-01-21
    相关资源
    最近更新 更多