我正在用ant编写内联javascript。此脚本将扫描目录并输出与给定时间戳相关的最新文件名。
<script language="javascript"> <![CDATA[
importPackage(Packages.java.lang);
importPackage(Packages.org.apache.commons.io.FileUtils);
importClass(Packages.java.io.File);
importClass(Packages.java.util.Iterator);
var path = "D:\DirectoryToScan\";
var timeToCompare = buildServers.getProperty("buildStartTime");
var invocationTime = new Date(timeToCompare );
invocationTime = invocationTime.getTime();
var directoryToSearch = new File(path );
//CODE BREAKS HERE. NONE OF THE SUBSEQUENT LINES EXECUTE
var fileIterator = FileUtils.iterateFiles(directoryToSearch, new String[]{"pdf","html"} , true);
//iterate through files and directories in builtDocs folder and return false if any of the files is older than invocation time
while (fileIterator.hasNext()) {
var doc = fileIterator.next();
if ((!FileUtils.isFileNewer(doc, invocationTime))) {
return false;
}
}
]]> </script>
我注意到第一次调用FileUtils会中断。我也尝试使用一些简单的类,但它们不可访问,看起来像import语句不适用于自定义类或属于显然在这里无法访问的包(例如apache.tools.ant.util.FileUtils)。
在访问类之前,我是否需要在此处正确加载类?
答案 0 :(得分:1)
如果您尝试使用的类不在Ant自己的lib目录中,那么您需要为脚本指定类路径:
<path id="script.classpath">
<fileset dir="lib" includes="**/*.jar"/>
</path>
<script language="javascript" classpathref="script.classpath">
...
答案 1 :(得分:0)
通过将jar文件包含在ant.cmd文件中解决了该问题。