maven 使用pom文件从目标目录中移除或删除资源文件

ncecgwcz  于 2023-03-17  发布在  Maven
关注(0)|答案(6)|浏览(572)

我在pom.xml中有两个概要文件,并且我有一些资源文件,我已经将它们添加到目标资源目录中:${project.build.outputDirectory}/resources。我需要做的是在执行第二个概要文件的过程中删除那些资源文件。有没有办法从目标目录中删除现有的文件?

qni6mghb

qni6mghb1#

我确实同意Matthew的看法,但是我得到的印象是,最初的发帖者是在询问如何在概要文件的(正常)“执行”过程中自动执行clean
您可以为Maven Clean插件定义一个插件执行,它通常只绑定到clean。但是通过定义插件执行,您可以绑定clean:clean(这是clean插件的clean目标)添加到您想要的任何lifecycle phase。Maven Clean插件的文档中有一个如何执行此操作的示例。文档中也有删除附加文件的an example。合并后看起来像这样:

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

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

7hiiyaii

7hiiyaii3#

mvn clean将删除target目录(以及其中的所有文件)。如果只想从target目录中删除某些文件,请执行以下操作的组合:

  • excludeDefaultDirectories以阻止其删除整个目录,以及
  • filesets来告诉它要删除什么

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

e5nqia27

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

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

cotxawn7

cotxawn76#

感谢以上的回答,最后我得出了这样的结论:
如果您想删除**目标文件夹中某些目录,您必须创建类似于下面的结构。
例如,这只删除文件夹的所有内容:

  • 目标/解包
  • 通用外部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>

相关问题