Maven - как удалить содержимое папки во время чистой фазы?
В моем проекте у меня есть папка с именем war
. Он изначально пуст, и он находится под контролем версий. Папка заполняется Maven во время фазы package
, а плагин Eclipse WST разворачивает веб-приложение из этой папки.
Я хочу удалить содержимое папки war
во время фазы clean
, но не самой папки. Как мне это сделать? Пока я знаю, как удалить всю папку war
:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<followSymLinks>false</followSymLinks>
<filesets>
<fileset>
<directory>${basedir}/war</directory>
</fileset>
</filesets>
</configuration>
</plugin>
Как удалить только содержимое папки war
, но не самой папки? Я знаю, что добавив некоторые существующие исключения, папка не будет удалена. Но как вообще удалить только содержимое папки?
Ответы
Ответ 1
Добавьте этот раздел includes
в определение вашего набора файлов
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<filesets>
<fileset>
<directory>war</directory>
<includes>
<include>**/*</include>
</includes>
<followSymlinks>false</followSymlinks>
</fileset>
</filesets>
</configuration>
</plugin>
</plugins>
</build>
Ответ 2
В моем случае мне нужно было удалить каталог "bin" и все содержимое этого подкаталога. Я сделал это в своем родительском pom.xml:
<fileset>
<directory>${basedir}</directory>
<includes>
<include>**/bin/**</include>
</includes>
<followSymlinks>false</followSymlinks>
</fileset>
Здесь найден какой-либо каталог bin в моем проекте и удалены все содержимое папки bin.
Ответ 3
Вам нужно будет использовать плагин maven ant и добавить задачу только для удаления содержимого папки. Однако зачем вам военный файл в управлении версиями? Каждый раз, когда вы создаете базу кода, вы обнаружите, что есть некоторые модификации/новые файлы (сгенерированные классы). Если вы используете стандартные правила maven, целевая папка используется для всего вывода.
Ответ 4
Если вы хотите рекурсивно удалить несколько каталогов:
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>auto-clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
<configuration>
<filesets>
<fileset>
<directory>${basedir}</directory>
<includes>**/dir1/**</includes>
</fileset>
<fileset>
<directory>${basedir}</directory>
<includes>**/dir2/**</includes>
</fileset>
<fileset>
<directory>${basedir}</directory>
<includes>**/dir3/**</includes>
</fileset>
</filesets>
</configuration>
</execution>
</executions>
</plugin>
Ответ 5
чтобы удалить папку из папки src/main/webapp/, используйте:
<configuration>
<filesets>
<fileset>
<directory>src/main/webapp</directory>
<includes>
<include>folder/</include>
</includes>
<followSymlinks>false</followSymlinks>
</fileset>
</filesets>
</configuration>