Hybris local.properties中的环境变量
我想知道,在Hybris属性文件中,是否有一种引用环境变量的方法 例如,在local.properties中:Hybris local.properties中的环境变量,hybris,Hybris,我想知道,在Hybris属性文件中,是否有一种引用环境变量的方法 例如,在local.properties中: my.property=${my_环境_变量} 我的研究得出结论,这在春天是可能的,但在Hybris似乎不起作用 如果您有任何想法,我们将不胜感激。我发现这与您的问题有关。希望能有帮助 无法访问local.properties文件中的shell环境变量。作为一种解决方法,您可以在启动平台之前执行echo“my.property=$my\u ENVIRONMENT\u VARIABLE”
my.property=${my_环境_变量}
我的研究得出结论,这在春天是可能的,但在Hybris似乎不起作用
如果您有任何想法,我们将不胜感激。我发现这与您的问题有关。希望能有帮助 无法访问local.properties文件中的shell环境变量。作为一种解决方法,您可以在启动平台之前执行echo“my.property=$my\u ENVIRONMENT\u VARIABLE”>>local.properties。不,这是不可能的 实际上,hybris使用
org.apache.commons.configuration
包。在中,您将发现可以使用环境变量
user.file = ${sys:user.home}/settings.xml
action.key = ${const:java.awt.event.KeyEvent.VK_CANCEL}
java.home = ${env:JAVA_HOME}
不幸的是,hybris做了一些我无法解释的事情,他们跳过了默认实现,删除了所有插值功能
如果我们进一步分析该问题,则使用的配置类称为HybrisConfiguration
。这个类扩展了ApacheCommons配置的AbstractConfiguration
。getProperty
方法使用另一个名为ConfigIntf
的接口。实现可以在类AbstractConfig
中找到。这里有每个getString
getInteger
等。。。方法被重写
例如,对于String,该方法不调用该方法,但您会发现一个非常简单的
StringUtils.isEmpty(value) ? def : value;
所以,如果您想使用ApacheAPI的所有功能,那么请尝试替换hybris实现。。。但是,我认为,如果不修改平台,就很难做到这一点,因为我没有看到任何可以注入的bean。可以访问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
如您所见,设置需要加前缀和转义,才能作为环境变量使用
user.file = ${sys:user.home}/settings.xml
action.key = ${const:java.awt.event.KeyEvent.VK_CANCEL}
java.home = ${env:JAVA_HOME}
希望这对您有用。谢谢@alain.janinm,我发现您可以在定义HYBRIS_DIR的同一文件中添加类似环境的变量。。。但是,如果您想说,将数据库密码从受版本控制的属性文件中移出,这是没有帮助的,因为它们在系统运行之后才可用。正确的解决方案就是我发布的解决方案