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