Удалить или удалить файлы ресурсов из целевого каталога, используя файл pom

У меня есть два профиля в pom.xml, и у меня есть несколько файлов ресурсов, которые я добавил в целевой каталог ресурсов: ${project.build.outputDirectory}/resources во время исполнения первого профиля. Что мне нужно сделать, это удалить эти файлы ресурсов во время выполнения второго профиля. Есть ли способ удалить или удалить существующие файлы из целевого каталога?

6 ответов

Я согласен с замечаниями Мэтью, но у меня сложилось впечатление, что оригинальный постер спрашивал, как автоматизировать исполнение clean во время (нормального) "исполнения" профиля.

Вы можете определить выполнение плагина для Maven Clean Plugin. Это обычно связано только с clean, но, определив исполнение плагина, вы можете связать clean:clean (это clean цель clean плагин) к любой фазе жизненного цикла вы хотите. В документации к плагину Maven Clean есть пример того, как это сделать. В документации также есть пример удаления дополнительных файлов. Слияние двух выглядит так:

  <plugin>
    <artifactId>maven-clean-plugin</artifactId>
    <version>2.5</version>
    <executions>
      <execution>
        <id>auto-clean</id>
        <phase>initialize</phase>
        <goals>
          <goal>clean</goal>
        </goals>
        <configuration>
         <filesets>
            <fileset>
              <directory>some/relative/path</directory>
            </fileset>
          </filesets>
        </configuration>
      </execution>
    </executions>
  </plugin>

Я получил решение..!!

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
    <execution>
        <phase>test</phase>
        <goals>
            <goal>run</goal>
        </goals>
        <configuration>
            <tasks>
                <delete>
                    <fileset dir="${project.build.outputDirectory}/resources" includes="*.xml" />
                </delete>
            </tasks>
        </configuration>
    </execution>
</executions>
</plugin>

для справки - http://maven.apache.org/guides/mini/guide-building-for-different-environments.html

mvn clean удалит target каталог (и, следовательно, все файлы в нем). Если вы хотите удалить только определенные файлы из target каталог, комбинация из:

  • excludeDefaultDirectories остановить его от удаления всего каталога, и

  • filesets сказать ему, что удалить

ссылка: http://maven.apache.org/plugins/maven-clean-plugin/clean-mojo.html

Решение с помощью Apache Maven AntRun Plugin 1.8:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.8</version>
  <executions>
    <execution>
      <phase>initialize</phase>
      <goals>
        <goal>run</goal>
      </goals>
      <configuration>
        <target>
          <delete 
            dir="${project.build.outputDirectory}/resources"
            includeemptydirs="true"/>
        </target>
      </configuration>
    </execution>
  </executions>
</plugin>

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

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.8</version>
    <executions>
        <execution>
            <phase>compile</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <delete file="${project.build.outputDirectory}/appContextLocal.xml" />
                    <delete
                        file="${project.build.outputDirectory}/appContextServer.xml" />
                </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>

Я также подумал, что здесь вы можете запускать любые команды ant вместо любой задачи, которая вам нужна между <tasks> .... </tasks> и это будет работать.

Список задач муравья, которые вы можете выполнить здесь

Ссылка: http://maven.apache.org/plugins/maven-antrun-plugin/usage.html

Благодаря приведенным выше ответам. наконец я пришел к чему-то вроде:

Если вы хотите простоудалить несколько каталогов в целевой папке, вам нужно создать такую ​​конструкцию, как эта.
это, например, удаляет только все содержимое папок:

  • мишень / распаковки
  • генераторный внешний-apklibs

excludeDefaultDirectories позволяет неудалять целевую папку целиком.
Я использовал его, чтобы очистить целевую папку перед анализом lint.

       <plugin>
            <artifactId>maven-clean-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>Deleting all unnecessary files before lint analysis</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>clean</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <excludeDefaultDirectories>true</excludeDefaultDirectories>
                <filesets>
                    <fileset>
                        <directory>target/unpack</directory>
                        <followSymlinks>false</followSymlinks>
                        <excludes>
                            <exclude>*</exclude>
                        </excludes>
                    </fileset>
                    <fileset>
                        <directory>gen-external-apklibs</directory>
                        <followSymlinks>false</followSymlinks>
                        <excludes>
                            <exclude>*</exclude>
                        </excludes>
                    </fileset>
                </filesets>
                <verbose>true</verbose>
            </configuration>
        </plugin>
Другие вопросы по тегам