Фильтр исключения не работает для filevault-package-maven-plugin - PullRequest
1 голос
/ 09 апреля 2020

У меня есть пакет контента с узлами, который я хотел бы исключить, когда этот пакет установлен в AEM 6.5. Конфигурация исключения определена в фильтре. xml (META-INF / хранилище / фильтр. xml).

Ниже приведено представление моего фильтра. xml

<?xml version="1.0" encoding="UTF-8"?>
<workspaceFilter version="1.0">
    <filter root="/apps/amzn-biz">
        <exclude pattern="/apps/amzn-biz/i18n(.*)"/>
    </filter>
    <filter root="/apps/sling"/>
</workspaceFilter>

Мой pom. xml имеет конфигурацию ниже

<!-- ====================================================================== -->
            <!-- V A U L T   P A C K A G E   P L U G I N S                              -->
            <!-- ====================================================================== -->
            <plugin>
                <groupId>org.apache.jackrabbit</groupId>
                <artifactId>filevault-package-maven-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <group>amzn-biz</group>
                    <acHandling>merge_preserve</acHandling>
                    <packageType>content</packageType>
                    <embeddeds>
                        <embedded>
                            <groupId>com.amazon.business</groupId>
                            <artifactId>amzn-biz-foundation.core</artifactId>
                            <target>/apps/amzn-biz/install</target>
                        </embedded>
                    </embeddeds>
                    <subPackages>
                        <subPackage>
                            <groupId>com.adobe.cq</groupId>
                            <artifactId>core.wcm.components.all</artifactId>
                            <filter>true</filter>
                        </subPackage>
                        <subPackage>
                            <groupId>com.adobe.cq</groupId>
                            <artifactId>core.wcm.components.examples</artifactId>
                            <filter>true</filter>
                        </subPackage>
                    </subPackages>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.day.jcr.vault</groupId>
                <artifactId>content-package-maven-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <verbose>true</verbose>
                    <failOnError>true</failOnError>
                </configuration>
            </plugin>

Я пробовал несколько вещей, изменив свои шаблоны исключения на. / i18n. , но у меня это не сработало.

Я также пытался добавить filterSource в конфигурацию filevault-package-maven-plugin, но затем я получаю сообщение об ошибке. Project содержит фильтр. xml в META-INF / vault, но также указывает источник фильтра.

1 Ответ

3 голосов
/ 09 апреля 2020

Вы должны удалить узлы из пакета содержимого. У вас не должно быть контента в вашем пакете контента, который явно не охвачен правилом фильтра.

Ваша проблема - странная обратная совместимость. По крайней мере, в CQ5 еще не было режимов фильтра (mode="replace|merge|update"). В те дни было правило, что весь контент, на который распространяется правило фильтра, заменяется. Все остальное содержимое объединено. Когда были введены режимы фильтрации, они стали неинтуитивными, но обратно совместимыми. В вашем случае папка i18n объединена.

Практическое правило. Пакет содержимого, который снова импортируется и экспортируется, должен быть идентичным. (это не так)

Для получения дополнительной информации см. Таблицу в https://jackrabbit.apache.org/filevault/filter.html#Usage_for_Import .2F Установка для получения дополнительной информации. Для вашей папки i18n написано:

узлы, которые являются предками защищенных правил : десериализованы из пакета содержимого (по причинам обратной совместимости), узлы, которые не являются предками покрытых правил: не тронут. Не следует полагаться на это поведение, т. Е. Все элементы в пакете содержимого должны всегда охватываться каким-либо правилом фильтрации, чтобы сделать поведение более явным.

...