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 への最初の呼び出しが壊れていることに気付きました。また、いくつかの単純なクラスを使用してみましたが、アクセスできず、インポートステートメントがカスタムクラスに対して機能していないか、明らかにここでアクセスできないパッケージ (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

この問題は、jar ファイルを ant.cmd ファイルに含めることで解決されました。

于 2012-08-08T06:59:23.313 に答える