Ant脚本和嵌入的javascript试图读取文件



我有以下ant构建目标:

<target name="analyze">
    <script language="javascript">
    <![CDATA[
            importPackage(java.lang);
            var path = project.getProperty("PROJECT_HOME") + "/oms";
            System.out.println("path = " +path);                
        ]]>
    ]]>
    </script>
</target>

我想递归地查找目录中的所有文件,以及它们是否以结尾。java打印出来。这可能吗?

Ant script任务文档中有一个例子基本上就是这样做的。这是一个简化版本:

<script language="javascript">
<![CDATA[
    importClass(java.io.File);
    fs = project.createDataType("fileset");
    dir = "src";
    fs.setDir( new File( dir ) );
    fs.setIncludes( "**/*.java" );
    // create echo Task via Ant API
    echo = project.createTask("echo");
    // iterate over files found.
    srcFiles = fs.getDirectoryScanner( project ).getIncludedFiles( );
    for ( i = 0; i < srcFiles.length; i++ ) {
        var filename = srcFiles[i];
        // use echo Task via Ant API
        echo.setMessage( filename );
        echo.perform( );
    }]]>
</script>

这将使用Ant文件集来查找文件。在这里,在文件集上设置了一个includes规则,这样迭代器只返回找到的.java文件,并使用对文件名的字符串操作来丢弃任何其他文件。

如果需要设置排除规则,可以通过FileSet类(实际上是AbstractFileset类)的setExcludes()方法进行设置。请参阅文档中的模式,以了解更多关于Ant通配符的信息。

您也可以使用核心Ant任务来实现这一点,而无需使用javascript:

  <fileset dir="java" id="java.files.ref">
    <include name="**/*.java"/>
  </fileset>
  <pathconvert pathsep="${line.separator}" property="java.files" refid="java.files.ref"/>
  <echo>${java.files}</echo>

相关内容

  • 没有找到相关文章

最新更新