如何从local.properties获取配置数据到impex?

时间:2016-02-08 09:52:32

标签: hybris impex

是否可以从local.properties配置文件中定义的环境变量中获取值并通过impex文件访问它?

实施例

$someMacro=<some variable from config>

谢谢!

2 个答案:

答案 0 :(得分:11)

您可以将此添加到您的impex:

# Import config properties into impex macros
UPDATE GenericItem[processor=de.hybris.platform.commerceservices.impex.impl.ConfigPropertyImportProcessor];pk[unique=true]

现在加载了local.properties等的所有配置,可以通过$config-前缀使用,例如:

<强> local.properties

your.config.property=322

所以你的impex看起来像是:

# Import config properties into impex macros
UPDATE GenericItem[processor=de.hybris.platform.commerceservices.impex.impl.ConfigPropertyImportProcessor];pk[unique=true]

$variable=$config-your.config.property

INSERT_UPDATE SampleItem;code[unique=true];name
;sample1;$variable

# OR you can just directly use the config macro
INSERT_UPDATE SampleItem;code[unique=true];name
;sample1;$config-your.config.property

希望这适合你。

编辑:请注意,如果没有找到此类财产,则上面样本中存储的值应完全为:$config-your.config.property

答案 1 :(得分:0)

要完成@Atsusa Kai answer,可以避免单独包含标题的行。

让这一行加载属性真是太丑了......但这实际上是ConfigPropertyImportProcessor类注释中提到的内容:

  /**
   * Impex ImportProcessor that injects all config properties as impex definitions.
   * All defined configuration properties are added as impex macro definitions with
   * the prefix of "config-". For example the config key <tt>mail.smtp.server</tt>
   * can be accessed via the macro <tt>$config-mail.smtp.server</tt>.
   * In order to use this import processor and to load the configuration properties
   * the following must be added to the top of the impex file:
   *
   * <tt>UPDATE GenericItem[processor=de.hybris.platform.commerceservices.impex.impl.ConfigPropertyImportProcessor];pk[unique=true]</tt>
   */

另一种方法是使用为此类操作量身定制的beanshell命令。

您可以通过

替换UPDATE GenericItem行
#%new de.hybris.platform.commerceservices.impex.impl.ConfigPropertyImportProcessor().init(impex)

但您需要启用代码执行。