maven-clean-plugin не удаляет все указанные каталоги
В моем проекте .pom
Я настроил maven-clean-plugin
вот так:
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.6.1</version>
<configuration>
<filesets>
<fileset>
<directory>src/main/webapp/bower_components</directory>
</fileset>
<fileset>
<directory>node_modules</directory>
</fileset>
<fileset>
<directory>node</directory>
</fileset>
</filesets>
</configuration>
</plugin>
Целью плагина является удаление каталогов, которые созданы frontend-maven-plugin
, Во всяком случае, последний работает хорошо.
проблема
Теперь проблема в том, что ни по какой причине ни одна из перечисленных выше папок никогда не удаляется. И это всегда тот, что "посередине". Я добавил 3 filesets
и всегда 2-й не удаляется, смотрите логи:
[INFO] Deleting /src/main/webapp/bower_components (includes = [], excludes = [])
[INFO] Deleting /node_modules (includes = [.bindings], excludes = [])
[INFO] Deleting /node (includes = [], excludes = [])
Если я изменю порядок папок:
[INFO] Deleting /src/main/webapp/bower_components (includes = [], excludes = [])
[INFO] Deleting /node (includes = [.bindings], excludes = [])
[INFO] Deleting /node_modules (includes = [], excludes = [])
А также 2-й вариант всегда содержит эту часть: includes = [.bindings]
что я считаю, приводит к тому, что папка не удаляется.
Почему это происходит и как это исправить?
РЕДАКТИРОВАТЬ, журнал отладки
mvn -X clean
результат, я думаю, вот где он ломается:
После разбора pom.xml
он читает конфигурацию с этим параметром. Однако я не положил это там.
1 ответ
ОК, я нашел проблему! Это на самом деле ошибка в плагине и уже сообщается. Это влияет на maven-clean-plugin 2.6.1
,
Это была неправильная конфигурация моей стороны, читайте дальше для разрешения.
ситуация
У вас есть родительский проект и дочерний проект, оба должны использовать плагин.
Сейчас;
- в родительском проекте вы указываете несколько наборов файлов.
- в дочернем проекте вы указываете несколько наборов файлов.
То, что я думаю, ожидается:
Плагин читает как родительские, так и дочерние наборы файлов и очищает их все.
Что просходит:
Плагин перезаписывает родительские наборы файлов дочерними. Наборы файлов переопределяются по порядку. ОДНАКО родительская конфигурация для набора файлов не очищается!
Моя ситуация: Parent.pom:
<filesets>
<fileset>
<directory>test-output</directory>
</fileset>
<fileset>
<directory>${basedir}/</directory>
<includes>
<include>.bindings</include>
</includes>
</fileset>
</filesets>
Детский пом:
<filesets>
<fileset>
<directory>node</directory>
</fileset>
<fileset>
<directory>node_modules</directory>
</fileset>
<fileset>
<directory>src/main/webapp/bower_components</directory>
</fileset>
</filesets>
И с вышеуказанной информацией; Конфигурация, читаемая плагином:
<filesets>
<fileset>
<directory>node</directory>
</fileset>
<fileset>
<directory>node_modules</directory>
<includes>
<include>.bindings</include>
</includes>
</fileset>
<fileset>
<directory>src/main/webapp/bower_components</directory>
</fileset>
</filesets>
вместо конфига с 5 наборами файлов.
Отчет об https://issues.apache.org/jira/browse/MCLEAN-64
ПОСТАНОВИЛИ
Для настройки есть некоторые магические атрибуты, чтобы указать, как следует комбинировать элементы xml. В этом случае добавьте объединение.children="append" к тегу наборов файлов. Более подробную информацию об этом можно найти на странице справки POM. http://maven.apache.org/pom.html
Стоит отметить, что достаточно установить combine.children="append"
в детском проекте .pom
,