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

Удаление или удаление файлов ресурсов из целевого каталога с помощью файла pom

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

4b9b3361

Ответ 1

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

<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

Ответ 2

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

Вы можете определить выполнение плагина для плагина Maven Clean. Обычно он привязан к 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>

Ответ 3

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

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

  • filesets, чтобы сообщить, что удалить

ref: http://maven.apache.org/plugins/maven-clean-plugin/clean-mojo.html

Ответ 4

Решение с 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>

Ответ 5

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

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

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

excludeDefaultDirectories позволяет n удалить полную целевую папку.
Я использовал его для очистки целевой папки до анализа линта.

       <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>

Ответ 6

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

<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>, и она будет работать.

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

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