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