Maven POM中的OpenShift访问环境变量
我尝试在application-config.xml或POM.xml中访问OpenShift环境变量,但未成功 application-config.xmlMaven POM中的OpenShift访问环境变量,openshift,Openshift,我尝试在application-config.xml或POM.xml中访问OpenShift环境变量,但未成功 application-config.xml <mongo:db-factory id="mongoDbFactory" mongo-ref="mongo" dbname="testMongoDb" username="${OPENSHIFT_MONGODB_DB_USERNAME}"
<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>
${env.OPENSHIFT\u MONGODB\u DB\u USERNAME}
${env.OPENSHIFT\u MONGODB\u DB\u PASSWORD}
mongodburl.openshift.com
99999
测试最终名称
src/main/resources/
真的
上述选项都不起作用。在部署到Openshift时,有人能够访问环境变量吗?顺便说一句,这些都不是Openshift问题 但是要回答问题的第一部分,您应该知道Spring在默认情况下不会解析环境变量,但是您可以在配置文件中启用PropertyPlaceHolderConfigure来解决这个问题
要回答第二个问题,请看这里詹金斯不知道环境变量。 这些环境变量在Jenkins gears上不可用,它们只存在于具有连接数据库的“应用程序gear”上 考虑运行时配置。 您正在尝试对部署工件中的数据库设置进行硬编码。这可能是一个缺点。例如,如果您部署到不同的环境进行测试和生产,则必须多次构建应用程序。因此,你应该决定这是否是你的问题。如果是,您可以轻松地从Java应用程序中读取环境变量 您必须自己设置环境变量。 访问另一个gear的环境变量没有简单的方法,所以您必须自己设置它们(或者在pom.xml中硬编码它们,这至少对于密码来说是一种糟糕的做法)
请参阅知识文章以确认只有硬编码是可能的。我最近也遇到过类似情况:
start
action hook脚本时,变量不可见echo$MY_NEW_变量的test Jenkins作业
它也是空的我知道spring不会解析属性,但是OpenShift使用Jenkins创建构建,然后将构建部署到他们的平台上。我希望他们的构建过程将替换POM中的环境变量。正如您所指出的,我将环境变量称为${env.XXXXXXXX};Openshift Jenkins在创建构建过程时,它并没有像预期的那样替换环境变量。您关于Openshift的陈述不正确,它使用标准maven来构建和部署java应用程序。詹金斯的使用是可选的。请更改此问题的名称我没有时间检查,但这些环境变量是否可能在OpenShift的Jenkins上不可用?请注意,集成测试正在另一个名为bldr的设备上运行。@Chris我得出了与您相同的结论;所以我可能不得不重新表述我的问题-我们如何使环境变量可用于Jenkin或bldr实例?我已经为每个环境创建了类似于所述的配置文件。我的意图之一是避免将OpenShift变量悄悄地添加到应用程序中;我想在部署配置文件中合并环境变量,以便轻松更改/管理部署位置。@pavan:作者正在pom.xml中硬编码数据库参数,但您希望避免这样做。因此,您需要在运行时读取环境变量或在jenkins上设置环境变量。