2010-05-26 37 views
12

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

有没有办法删除这个目录自动在Maven的构建/安装结束?

谢谢,p。

回答

14

使用maven-清理插件这里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> 
+0

这将在构建开始时运行清洗,而不是结束。 – khmarbaise 2010-05-26 10:24:31

+1

@khmarbaise - 我改变了安装阶段,甚至在最后阶段也能正常工作。但我打电话给mvn安装。为了使mvn包能够工作,我需要使用maven-clean-plugin作为包的阶段,并在最后完成。 – JoseK 2010-05-26 10:57:23

+0

只需要小心,在部署或安装阶段之前不要删除,项目将变得毫无用处。 – sal 2010-05-27 02:00:47

5

您应该简单地在最后的清理目标添加到您的Maven目标。

mvn install clean 

与清理插件的问题是,如果你想在构建结束时运行的清洁这取决于你叫之初,其目标。例如,你调用了mvn包,你需要有一个不存在的后期包,或者如果你调用了mvn install,你必须安装后期不存在的阶段。

+0

@khmarbaise - 清洁插件与阶段安装/包即使在结束。你不需要安装后/后期包。但它确实需要匹配所调用的原始阶段。 – JoseK 2010-05-26 11:02:03

3

最简单的方法是简单地将“clean”添加到普通构建命令的末尾。例如。 mvn干净安装干净。

2

如果你想要到j 乌斯删除目标文件夹中的一些目录,你必须创建一些结构是这样的。
这个例如只删除文件夹中的所有内容:

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

excludeDefaultDirectories允许到n OT删除完整的目标文件夹
我用它来清理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>