Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant 在执行cvs签出时覆盖现有文件_Ant_Cvs - Fatal编程技术网

Ant 在执行cvs签出时覆盖现有文件

Ant 在执行cvs签出时覆盖现有文件,ant,cvs,Ant,Cvs,我有一个Ant脚本,每当需要部署应用程序时,它都会执行CVS-checkout。 理想的方法是先删除现有的本地代码,然后进行签出,但我似乎无法删除项目,因为我的构建文件也是项目的一部分。 因此,我想进行一次签出,在这里,我现有的文件将被存储库中的文件替换。 有没有办法强制cvs签出,从而覆盖现有文件 我的构建目标看起来像 <target name="deploy.branch" depends="checkPropertyForBranch" if="branchPropertyExist

我有一个Ant脚本,每当需要部署应用程序时,它都会执行CVS-checkout。 理想的方法是先删除现有的本地代码,然后进行签出,但我似乎无法删除项目,因为我的构建文件也是项目的一部分。 因此,我想进行一次签出,在这里,我现有的文件将被存储库中的文件替换。 有没有办法强制cvs签出,从而覆盖现有文件

我的构建目标看起来像

<target name="deploy.branch" depends="checkPropertyForBranch" if="branchPropertyExist">
        <record name="log.txt" action="start" />
        <echo message="${release.number}" />
        <antcall target="tag.branch" />
        <antcall target="checkout.branch" />
        <antcall target="stopJboss" />
        <antcall target="stopRemoteJboss" />
        <sleep seconds="10" />
        <antcall target="replaceTag" />
        <antcall target="deploy" />
        <antcall target="moveConfigFiles" />
        <antcall target="promote" />
        <parallel>
            <antcall target="startJboss" />
            <antcall target="startRemoteJboss" />
        </parallel>
        <antcall target="waitForWebSite" />
        <antcall target="mailSuccessBranch" />
        <record name="log.txt" action="stop" />
    </target>

结帐目标如下

 <target name="checkout.branch">
        <tstamp>
            <format property="CHECKOUT" pattern="M/d/yyyy, hh:mm:SS a, z" locale="en" />
        </tstamp>
        <property name="checkout_start" value="${CHECKOUT}" />
        <echo message="CVS checkout of BRANCH: ${branch_tag}" />
        <!--<delete dir="${basedir}"/>-->
        <cvspass cvsroot="cvsroot" password="*****" />
        <cvs cvsroot="cvsroot" command="co -r ${branch_tag} project"dest="${checkout.dir}"  />
    </target>

build.xml位于
project/scripts/build.xml

如果
basedir
。/
ie
“项目”
将构建脚本检查到项目中,那么您可以删除源项目并进行签出。

我认为比强制cvs签出更好的方法是在签出之前删除文件。您可以使用
任务并排除不应删除的文件。试试这个:

<project name="cvs.test">

    <dirname property="base.dir" file="${ant.file.cvs.test}"/>

    <target name="cvs.checkout" depends="clean">
        <!-- here is the checkout -->
    </target>

    <target name="clean">
        <delete dir="${base.dir}">
            <exclude name="build.xml"/>
        </delete>
    </target>

</project>


作为签出目标的一部分,我以前确实尝试过这个方法,并且它只有在签出目标运行时才能正常工作,也就是说,它首先删除所有文件,然后进行签出。但当整个过程运行时,ie deploy没有显示“无法删除目录”,我也尝试了一些delete的变体,因为我认为可能是cvs delete标记。我尝试了“”,该命令作为“rm-rf.././”存储在属性文件中。但是这两个命令都会执行部分删除并终止生成,并出现一个错误。您可以向我们显示您的项目目录的生成和结构吗?您是否尝试在
签出.branch
之前调用
clean
任务?成功了!!。。。似乎我在删除build.properties文件时没有排除build.properties文件。my build.xml已经是代码的一部分,并且它向您检查了删除文件所需的权限?是的,当我运行签出目标时,它工作得很好(删除和合并)。但是,当运行部署目标,而部署目标又运行签出目标时,它就会失败。