Phing - 使用FTP进行部署,但仅在大小发生变化时才覆盖

Dre*_*rew 5 phing ftp

我正在使用Phing,现在我正在使用此代码将我的文件上传到FTP:

<target name="ftp.upload">
    <echo>Uploading files to FTP</echo>
    <ftpdeploy 
        host="${ftp.destination.host}"
        port="${ftp.destination.port}"
        username="${ftp.destination.username}"
        password="${ftp.destination.password}"
        dir="${ftp.destination.dir}"
        mode="${ftp.destination.mode}">
       <fileset refid="TheFiles" />
    </ftpdeploy>
    <echo>FTP Upload Finished!</echo>
</target>
Run Code Online (Sandbox Code Playgroud)

加载需要很长时间,而且我有很多图像 - 因此每次我进行小的文本更改时,我都不希望它重新上传所有内容.有没有办法检测哪些文件已被更改,只上传那些文件?

谢谢!

Ale*_*mov 8

这有点晚了......但你实际上可以用Phing做到这一点.这需要几个步骤:

定义要离开的日期属性.当您为将来的构建保存最后构建日期时,这将是必要的

< tstamp>
  < format property="builddate" pattern="%m/%d/%Y"  />
  < format property="buildtime" pattern="%I:%M %p" />
< /tstamp>
Run Code Online (Sandbox Code Playgroud)

定义lastbuilddate属性.将其定义为某种方式.然后包含一个具有相同属性的文件(将在运行结束时创建).如果文件存在(第二次运行和之后),它将覆盖您使用上次日期定义的设置

< property name="lastbuilddate" value="01/01/1970 12:00 AM" />
< property file="$.\lastbuild.properties" override="true"/>
Run Code Online (Sandbox Code Playgroud)

在文件集定义中包含日期任务.这指定仅选择在上次构建日期之后具有上次修改日期的文件

<fileset id ="TheFiles"> <date datetime ="$ {lastbuilddate}"when ="after"/> </ fileset>

运行您的ftp以获取TheFiles文件集

使用最新的运行日期更新lastbuild.properties文件.注意到我们正在使用最初定义的日期/时间属性.

    < echo msg="lastbuilddate=${builddate} ${buildtime}" file="$./lastbuild.properties" append="false" />
Run Code Online (Sandbox Code Playgroud)

每次运行目标时,它只会ftp自lastbuilddate属性中指定的日期以来更改的文件