Hybris local.properties中的环境变量

时间:2017-01-17 20:32:32

标签: hybris

我想知道在Hybris属性文件中是否有引用环境变量的方法。

例如,在local.properties中: my.property = ${MY_ENVIRONMENT_VARIABLE}

我的搜索结论是,这在春天是可行的,但似乎不适用于Hybris。

任何想法都会受到赞赏。

3 个答案:

答案 0 :(得分:1)

我发现这与Hybris Experts上的问题有关。希望它有所帮助。

无法访问local.properties文件中的shell环境变量。作为一种解决方法,您可以回显" my.property = $ MY_ENVIRONMENT_VARIABLE" >>在启动平台之前的local.properties

答案 1 :(得分:1)

不,不可能。

实际上hybris使用org.apache.commons.configuration包。在documentation中,您会发现可以使用环境变量。

user.file = ${sys:user.home}/settings.xml
action.key = ${const:java.awt.event.KeyEvent.VK_CANCEL}
java.home = ${env:JAVA_HOME}

不幸的是hybris做了我无法解释的事情,他们已经超越了默认实现并删除了所有插值功能。

如果我们进一步分析问题,则使用的配置类称为HybrisConfiguration。此类从Apache Commons Configuration扩展AbstractConfigurationgetProperty方法使用名为ConfigIntf的其他接口。该实现可在课程AbstractConfig中找到。每个getString getInteger等方法都被覆盖。

例如,对于String,该方法不会调用interpolate方法,而是您会发现一个非常简单的...

StringUtils.isEmpty(value) ? def : value;

因此,如果您想使用Apache API的所有功能,那么请尝试替换hybris实现...但是我认为如果不修改平台就不会那么容易,因为我没有'看到那里可以注射的豆子。

答案 2 :(得分:1)

可以访问hybris中的环境变量。我公司的一个合作伙伴在hybris文档中发现了这一点:

平台允许您将属性也指定为环境变量

# security: make the platform *abort startup* if no one overrides the settings below
db.url=<CHANGE_ME>
db.username=<CHANGE_ME>
db.password=<CHANGE_ME>
# security: end

已经为管理员想要确保以下用例专门引入了特殊属性值:a)文件不包含明智的设置,并且b)如果未覆盖这些设置,则系统不会启动。

在服务器上,这些设置将在启动Platform之前作为环境变量公开:

 foo$ export y_db_url=jdbc:mysql://my.secret-db-host.com/AlfavaMetraxis?useConfigs=maxPerformance&characterEncoding=utf8
 foo$ export y_db_username=Amy
 foo$ export y_db_password=Rory
 foo$ ./hybrisserver.sh start
...

如您所见,设置必须加上前缀并转义才能用作环境变量。

https://help.sap.com/viewer/a74589c3a81a4a95bf51d87258c0ab15/1905/en-US/8b8e13c9866910149d40b151a9196543.html?q=CHANGE_ME

希望这对您有用。