我尝试在application-config.xml或POM.xml中访问OpenShift环境变量失败
application-config.xml
<mongo:db-factory id="mongoDbFactory" mongo-ref="mongo"
dbname="testMongoDb"
username="${OPENSHIFT_MONGODB_DB_USERNAME}"
password="${OPENSHIFT_MONGODB_DB_PASSWORD}"
/>
的pom.xml
<properties>
<db.userName>${env.OPENSHIFT_MONGODB_DB_USERNAME}</db.userName>
<db.password>${env.OPENSHIFT_MONGODB_DB_PASSWORD}</db.password>
<db.url>mongodburl.openshift.com</db.url>
<db.port>99999</db.port>
</properties>
<build>
<finalName>testFinalName</finalName>
<resources>
<resource>
<directory>src/main/resources/</directory>
<filtering>true</filtering>
</resource>
</resources>
上述选项均无效。有没有人能够在部署到Openshift时访问env varilabes?
答案 0 :(得分:0)
顺便说一句,这些都不是OpenShift的问题。
但是要回答问题的第一部分,您应该知道Spring默认情况下不解析环境变量,但您可以在配置文件中启用PropertyPlaceholderConfigurer来修复此问题。
要回答您的第二个问题,请查看How to refer environment variable in POM.xml?
答案 1 :(得分:0)
Jenkins不知道环境变量。
这些环境变量在Jenkins齿轮上不可用,它们仅存在于具有连接数据库的“应用程序设备”上。
考虑运行时配置。
您正在尝试对部署工件中的数据库设置进行硬编码。这可能是一个缺点。例如,如果您部署到不同的环境进行测试和生产,则必须多次构建应用程序。因此,您应该决定这是否对您有用。如果是,您可以轻松地从Java应用程序中读取环境变量。
您必须自己设置环境变量。
没有简单的方法可以访问其他设备的环境变量,所以你必须自己设置它们(或者在你的pom.xml中对它们进行硬编码,这对于密码来说是不好的做法)。
请参阅知识文章How do I connect multiple applications to one database?,确认只能进行硬编码。
答案 2 :(得分:0)
我最近有类似的情况:
但
start
操作挂钩脚本时,该变量不可见echo $MY_NEW_VARIABLE
的测试Jenkins作业,它也是空的我需要承认我有DIY node的自定义Openshift配置,但也许对某人有帮助。
解决方案是在节点配置中重新连接从属设备(不同比标记节点脱机)