Подтвердить что ты не робот

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, но не самой папки? Я знаю, что добавив некоторые существующие исключения, папка не будет удалена. Но как вообще удалить только содержимое папки?

4b9b3361

Ответ 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>