我正在使用 Ant ftp 任务将我的项目文件部署到远程应用程序服务器。 Ant 无法检测远程文件的日期,并且每次都会重新上传所有文件。
当我在 Debug模式下启动 Ant 时,它会显示:
[ftp] checking date for mailer.war
[ftp] Could not date test remote file: mailer.war assuming out of date.
远程服务器是MS FTP(Windows Vista版本) Ant版本为1.8.2;我使用 commons-net-2.2 和 jakarta-oro-2.0.8 (找不到更新的版本)
我的 Ant 任务看起来像这样
<!-- Deploy new and changed files -->
<target name="deploy" depends="package" description="Deploy new and changed files">
<ftp server="localhost"
userid="" password=""
action="send" depends="yes"
passive="true"
systemTypeKey="WINDOWS" serverTimeZoneConfig="Europe/Sofia"
defaultDateFormatConfig="MMM dd yyyy" recentDateFormatConfig="MMM dd HH:mm"
binary="true" retriesAllowed="3"
verbose="true">
<fileset dir="${webapp.artefacts.path}"/>
</ftp>
</target>
我在这里读了一篇文章:Ant:The definitive guide这表示我需要 2.0.8 后的 jakarta oro 版本才能与 MS FTP 服务器通信,我从 SVN 构建了 jakarta-oro-2.1-dev-1 并使用了它,但我得到了同样的结果。与新库或没有 oro 库没有区别。我注意到Ant lib中有ant-apache-oro.jar。我也尝试删除,没有用。还有ant-commons-net.jar,但是如果没有外部commons-net-2.2.jar,ftp将无法工作。很奇怪。
请问有人可以帮我解决这个问题吗? Ant ftp 任务有任何解决方案或替代方案吗?谢谢!
最佳答案
jakarta-oro-2.0.8 是最新的官方(稳定)版本,但 svn 存储库中有更新的开发版本:
这里有2.0.9-dev-1:http://svn.apache.org/repos/asf/jakarta/oro/tags/oro-2.0.9-dev-1/
我认为 2.1-dev-1 就在这里:http://svn.apache.org/repos/asf/jakarta/oro/trunk/
您必须检查它并自己构建它(我认为只需运行 ant
就会默认构建 jar)。要从主干检查它,请执行以下操作:
svn co http://svn.apache.org/repos/asf/jakarta/oro/trunk/ oro
编辑:您确定 MS FTP 文件日期采用 MMM dd HH:mm
格式吗?尝试登录 ftp 并执行 LIST
命令。我认为它更像 MM/dd/yyyy HH:mm:ss
(或者可能没有秒)。
另外尝试添加timediffauto="true"
。可能是时间戳同步问题。
关于java - ant ftp 任务 "Could not date test remote file",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5051333/