首页 > 解决方案 > hybris 中的扩展构建顺序是什么?

问题描述

我在“extensioninfo.xml”中有这些扩展:

<extension dir="${HYBRIS_BIN_DIR}/ext-commerce/b2bapprovalprocess"/>
<extension dir="${HYBRIS_BIN_DIR}/ext-commerce/b2bcommerce"/>
<extension dir="${HYBRIS_BIN_DIR}/ext-template/b2bstore"/>
<extension dir="${HYBRIS_BIN_DIR}/ext-commerce/basecommerce"/>
<extension dir="${HYBRIS_BIN_DIR}/ext-content/bmecat"/>

这些扩展是如何构建的?如果我将它们放在同一个“extensioninfo.xml”文件中,是否有任何顺序?是否会在“b2bcommerce”之前构建“b2bapprovalprocess”,在“b2bstore”之前构建“b2bcommerce”等等......?

标签: hybris

解决方案


顺序由扩展的依赖关系定义,使用扩展的 extensioninfo.xml 中的 requires-extension。

如果 C 需要扩展 B,而 B 需要扩展 A,则顺序为 A、B、C。

如果 C 需要扩展 A,而 B 需要扩展 A,则顺序可以是 A、B、C 或 A、C、B。即如果 2 个或更多扩展位于同一级别,则顺序可能是随机的那个水平。

在下面来自acceleratorcms扩展的示例代码中,我们可以确定cms2liboracceleratorservices将在acceleratorcms. 但是,我们不能确定哪一个会是第一个:cms2libacceleratorservices.

<extensioninfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="extensioninfo.xsd">
    <extension abstractclassprefix="Generated" classprefix="AcceleratorCms" managername="AcceleratorCmsManager" managersuperclass="de.hybris.platform.jalo.extension.Extension" name="acceleratorcms">              
        <requires-extension name="cms2lib"/>                
        <requires-extension name="acceleratorservices"/>                
        <coremodule generated="true" manager="de.hybris.platform.acceleratorcms.jalo.AcceleratorCmsManager" packageroot="de.hybris.platform.acceleratorcms"/>            
    </extension>
</extensioninfo>

推荐阅读