之前,曾经写过通过rsync和ant来部署java代码,见:www.tech126.com/?p=88/


但却忽略了一个问题,当服务器的时间不准确时,那么rsync过去后,可能会对ant编译的结果造成影响


因为,ant缺省是增量编译的:


The source and destination directory will be recursively scanned for Java source files to compile. Only Java files that have no corresponding .class file or where the class file is older than the .java file will be compiled.


就是说,只有build目录下没有对应的class文件,或者class文件的时间比src的时间old时,才会编译对应的java文件


如果我们部署时,服务器的时间不准确,比当前时间晚上一定的时间,比如一个小时,或一天


那么有可能,我们本次修改的java文件就没有被rsync到对应的服务器上,或者即使rsync过去了,但仍然没有被ant编译


可能就会造成明明修改了java文件,但部署后在对应的服务器上却没有体现修改的内容


上午,在passport部署时,就出现了这个郁闷的问题,后来仔细分析了一下,发现正是41.239的服务器时间不正确导致的


所以,最好在服务器上加一个ntpdate的cron,来定期同步服务器的时间,保证其正确性