在Ant <tar>任务中排除.git </tar>

时间:2009-01-18 03:47:13

标签: ant build tar

我正在使用Ant 1.7.1来查找包含.git子目录的目录的内容。我目前的任务是

<tar
    destfile="sali-src-${version}.tgz"
    basedir="${basedir}"
    compression="gzip"
    excludes=".git, .gitignore, *.ipr, *.iws, *.iml">
</tar>

但是生成的tarball包含.git子目录。有人能指出我怎么能阻止它被收录?

2 个答案:

答案 0 :(得分:3)

这有效:

<?xml version="1.0"?>
<project name="test" default="tar">
        <target name="tar">
            <tar
                destfile="sali-src-${version}.tgz"
                basedir="${basedir}"
                compression="gzip"
                excludes=".git/**, .gitignore/**, **/*.ipr, **/*.iws, **/*.iml">
            </tar>
        </target>
</project>

您的模式错误,有关此处阅读的模式的更多信息:http://ant.apache.org/manual/dirtasks.html#patterns

答案 1 :(得分:3)

Ant有pre-configured default excludes,阻止基于目录的任务处理CVS,Subversion和VSS的控制文件。不幸的是,这些默认值不包括任何其他版本控制系统。但是,您可以使用<defaultexcludes> task修改默认值:

<defaultexcludes add="**/.git/**,**/.gitignore"/>

这将从任何后续处理中排除您的Git文件(因此每次后续使用&lt; tar&gt;,&lt; javac&gt;,&lt; jar&gt;或类似文件都将忽略控制文件)。