带有嵌入式javascript的Ant脚本试图读取文件

Ami*_*ani 3 javascript ant

我有以下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>
Run Code Online (Sandbox Code Playgroud)

我想以递归方式查找目录中的所有文件,如果它们以.java打印出来.这可能吗?

mar*_*ton 10

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>
Run Code Online (Sandbox Code Playgroud)

这使用Ant FileSet来查找文件.这里在文件集上设置了包含规则,以便.java迭代器只返回找到的文件 - 使用文件名上的字符串操作保存以丢弃任何其他文件.

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