Чтобы не выполнить сборку, когда каталог содержит нежелательный символ, вы можете использовать Maven Enforcer Plugin и write a custom rule, которые будут выполнять эту проверку, поскольку для этого нет специальных правил.
При этом вы также можете использовать правило evaluateBeanshell
для этой цели: это правило оценивает код Beanshell и не выполняет сборку, если скрипт возвращает false
. В этом случае правило использует FileUtils.getDirectoryNames
, метод, который возвращает список каталогов, рекурсивное совпадение, включает/исключает шаблоны стиля Ant, начиная с базового каталога. Ниже перечислены все каталоги в каталоге src
, содержащие двоеточие :
; этот список должен быть пустым для продолжения сборки.
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.4.1</version>
<executions>
<execution>
<id>enforce-beanshell</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<evaluateBeanshell>
<condition>org.codehaus.plexus.util.FileUtils.getDirectoryNames(new File("src"), "**/*:*", null, false).isEmpty()</condition>
</evaluateBeanshell>
</rules>
</configuration>
</execution>
</executions>
</plugin>
Сплетение Utils is already a dependency of the plugin, так что вам не нужно, чтобы добавить его снова, но было бы предпочтительнее, чтобы все-таки сделать это в случае, если будущие версии не имеют его. Весь путь относится к базовому каталогу проекта, поэтому нет необходимости указывать его в файле для начала поиска.
Обратите внимание, что это только файлы проверки в каталоге src
; в случае, если вы хотите проверить другие каталоги, вы можете добавить дополнительные условия. И, кроме того, он работает на этапе validate
, поэтому, если вы хотите проверить папки, созданные во время сборки, вам понадобится использовать другую фазу.
Что вы используете для проверки содержимого из AEM и сериализации? Я никогда не сталкивался с этой проблемой, и я являюсь пользователем Windows. Когда я использую [Vault] (https://docs.adobe.com/docs/en/aem/6-2/develop/dev-tools/ht-vlttool.html), он просто переименовывает все соответствующие файлы для использования подчеркиваний вокруг префикс ('_cq_dialog.xml',' _cq_editConfig.xml' и т. д.). Кроме того, Vault стремится сериализовать узлы 'jcr: content' как элементы XML, а не папки. – toniedzwiedz
Что касается плагинов Maven, ознакомьтесь с ['content-package-maven-plugin'] (https://docs.adobe.com/docs/en/aem/6-2/develop/dev-tools/vlt-mavenplugin .html) или ['maven-crx-plugin'] (https://github.com/Cognifide/Maven-CRX-Plugin), они оба используют' vlt' внутренне. – toniedzwiedz
Содержимое AEM было извлечено из пакета содержимого и помещено в 'src/test/resources/SLING-INF' для использования с тестами Prosper. Похоже, что менеджер пакетов ведет себя иначе, чем 'vlt' – antonyh