0

我正在用 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)。

在访问它们之前,我需要在这里做些什么来正确加载这些类吗?

4

2 回答 2

1

如果您尝试使用的类不在 Ant 自己的 lib 目录中,那么您需要为脚本指定一个类路径:

<path id="script.classpath">
  <fileset dir="lib" includes="**/*.jar"/>
</path>

<script language="javascript" classpathref="script.classpath">
  ...
于 2012-08-07T08:23:40.060 回答
0

该问题已通过在 ant.cmd 文件中包含 jar 文件得到解决。

于 2012-08-08T06:59:23.313 回答