我在pom.xml中有两个概要文件,并且我有一些资源文件,我已经将它们添加到目标资源目录中:${project.build.outputDirectory}/resources。我需要做的是在执行第二个概要文件的过程中删除那些资源文件。有没有办法从目标目录中删除现有的文件?
${project.build.outputDirectory}/resources
qni6mghb1#
我确实同意Matthew的看法,但是我得到的印象是,最初的发帖者是在询问如何在概要文件的(正常)“执行”过程中自动执行clean。您可以为Maven Clean插件定义一个插件执行,它通常只绑定到clean。但是通过定义插件执行,您可以绑定clean:clean(这是clean插件的clean目标)添加到您想要的任何lifecycle phase。Maven Clean插件的文档中有一个如何执行此操作的示例。文档中也有删除附加文件的an example。合并后看起来像这样:
clean
clean: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> <excludeDefaultDirectories>true</excludeDefaultDirectories> <filesets> <fileset> <directory>some/relative/path</directory> </fileset> </filesets> </configuration> </execution> </executions> </plugin>
uurity8g2#
我找到解决办法了!
<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
7hiiyaii3#
mvn clean将删除target目录(以及其中的所有文件)。如果只想从target目录中删除某些文件,请执行以下操作的组合:
mvn clean
target
excludeDefaultDirectories
filesets
参考:http://maven.apache.org/plugins/maven-clean-plugin/clean-mojo.html
e5nqia274#
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>
4uqofj5v5#
我只需要从输出目录中删除几个文件,下面的工作对我来说很好。
<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>
我还认为,您可以在这里运行任何蚂蚁命令,替换您在<tasks> .... </tasks>之间需要的任何任务,它将工作。您可以执行的Ant任务列表为here参考:http://maven.apache.org/plugins/maven-antrun-plugin/usage.html
<tasks> .... </tasks>
cotxawn76#
感谢以上的回答,最后我得出了这样的结论:如果您想删除**目标文件夹中某些目录,您必须创建类似于下面的结构。例如,这只删除文件夹的所有内容:
我用它来清理目标文件夹之前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>
6条答案
按热度按时间qni6mghb1#
我确实同意Matthew的看法,但是我得到的印象是,最初的发帖者是在询问如何在概要文件的(正常)“执行”过程中自动执行
clean
。您可以为Maven Clean插件定义一个插件执行,它通常只绑定到
clean
。但是通过定义插件执行,您可以绑定clean:clean
(这是clean
插件的clean
目标)添加到您想要的任何lifecycle phase。Maven Clean插件的文档中有一个如何执行此操作的示例。文档中也有删除附加文件的an example。合并后看起来像这样:uurity8g2#
我找到解决办法了!
供参考-http://maven.apache.org/guides/mini/guide-building-for-different-environments.html
7hiiyaii3#
mvn clean
将删除target
目录(以及其中的所有文件)。如果只想从target
目录中删除某些文件,请执行以下操作的组合:excludeDefaultDirectories
以阻止其删除整个目录,以及filesets
来告诉它要删除什么参考:http://maven.apache.org/plugins/maven-clean-plugin/clean-mojo.html
e5nqia274#
Apache Maven AntRun Plugin 1.8的解决方案:
4uqofj5v5#
我只需要从输出目录中删除几个文件,下面的工作对我来说很好。
我还认为,您可以在这里运行任何蚂蚁命令,替换您在
<tasks> .... </tasks>
之间需要的任何任务,它将工作。您可以执行的Ant任务列表为here
参考:http://maven.apache.org/plugins/maven-antrun-plugin/usage.html
cotxawn76#
感谢以上的回答,最后我得出了这样的结论:
如果您想删除**目标文件夹中某些目录,您必须创建类似于下面的结构。
例如,这只删除文件夹的所有内容:
excludeDefaultDirectories允许不删除整个目标文件夹**。
我用它来清理目标文件夹之前lint分析。