我想知道在Hybris属性文件中是否有引用环境变量的方法。
例如,在local.properties中:
my.property = ${MY_ENVIRONMENT_VARIABLE}
我的搜索结论是,这在春天是可行的,但似乎不适用于Hybris。
任何想法都会受到赞赏。
答案 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扩展AbstractConfiguration
。 getProperty
方法使用名为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
...
如您所见,设置必须加上前缀并转义才能用作环境变量。
希望这对您有用。