生成后删除'target'目录

时间:2010-05-26 09:33:42

标签: maven

我知道这可能是maven爱好者所不喜欢的,但整个'目标'目录在我们的程序和它的部署环境中浪费了空间。我们有其他构建过程负责创建实际部署,我目前手动删除每个maven构建后的目标目录,以便其内容不会干扰我的文件搜索等...

有没有办法在maven build / install结束时自动删除这个目录?

谢谢,p。

4 个答案:

答案 0 :(得分:14)

使用maven-clean-plugin http://maven.apache.org/plugins/maven-clean-plugin/examples/delete_additional_files.html

<project>


[...]
  <build>
<plugins>
  <plugin>
    <artifactId>maven-clean-plugin</artifactId>
    <version>2.4.1</version>
    <executions>
      <execution>
        <id>auto-clean</id>
        <phase>install</phase>
        <goals>
          <goal>clean</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
</plugins>
  </build>
  [...]
</project>

答案 1 :(得分:5)

你应该在最后为你的maven目标添加干净的目标。

mvn install clean

clean-plugin的问题在于,如果你想在构建结束时运行clean,那么它取决于你在开始时调用的目标。例如,您调用了mvn包,您需要有一个不存在的阶段后包,或者如果您调用了mvn install,则必须安装不存在的阶段。

答案 2 :(得分:3)

最简单的方法是在正常构建命令的末尾添加“clean”。例如。 mvn clean install clean。

答案 3 :(得分:3)

如果您想在目标文件夹中找到删除 某些 目录,则必须创建一些这样的构造。
例如,这只删除文件夹的所有内容:

  • 目标/解包
  • GEN-外部apklibs

excludeDefaultDirectories 允许n 删除完整目标文件夹
我用它在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>