Чтобы получить список имен файлов вместе с их размерами.
E:\ANT>ant -buildfile=nashornFileNames.xml
Buildfile: E:\ANT\nashornFileNames.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="MyProject" basedir="." default="fileNames">
<property environment="env"/>
<property name="library.file" value="E:\\ANT\\JAR"/>
<condition property="fileSep" value="\"><os family="windows"/></condition>
<condition property="fileSep" value="/"><os family="unix"/></condition>
<target name="fileNames" depends="showEnv">
<!-- script run both on rhino and nashorn -->
<script language="javascript"> <![CDATA[
// "nashorn:" pseudo URL scheme for nashorn's built-in scripts.
// To support Rhino load Mozilla compatibility script - which defines global functions like importPackage, importClass for rhino compatibility.
load("nashorn:mozilla_compat.js");
// Accessing Java packages and classes from script. Nashorn's recommended way to access Java classes is to use Java.type.
importPackage(java.io) // Rhino extensions: importPackage global function
importClass(java.lang.System); // Rhino extensions: global.importClass
var File = java.io.File; // Rhino way!
var String = Java.type("java.lang.String"); // Nashorn way!
// Access to Ant-Properties by their names
basedir = self.getProject().getProperty("basedir");
fileSep = project.getProperty("fileSep");
System.out.println(" [script command-line] Java API : " + fileSep);
// create and use a Task via Ant API
echo = self.getProject().createTask("echo");
function setMessage( msg ) {
echo.setMessage( msg );
echo.perform();
}
setMessage("[echo Task] Ant API : " + basedir );
// <fileset dir="" includes=""/> « https://ant.apache.org/manual/Types/fileset.html
var fileset = project.createDataType("fileset");
files = project.getProperty("library.file");
setMessage("files: " + files);
fileset.setDir( new File( files ) );
fileset.setIncludes("**/*.jar");
// Get the files (array) of that fileset
ds = fileset.getDirectoryScanner( self.getProject() );
fileset_files = ds.getIncludedFiles(); // Get only the files
// iterate over that array
for (i=0; i < fileset_files.length; i++) {
var basedir = fileset.getDir( self.getProject() );
var filePath = fileset_files[i];
var folders = filePath.split(fileSep).slice(0,-1).join(fileSep);
var fileName = filePath.split(fileSep).slice(-1)[0];
var file = new File(basedir, filePath);
var fileSize = file.length();
setMessage(folders + "« FileName : "+ fileName +" : " + fileSize + " byte");
}
]]></script>
</target>
<target name="showEnv">
<echo message="java.io.tmpdir = ${java.io.tmpdir}"/>
<echo message="windows tmpdir = ${env.TMP}"/>
<echo message="windows JAVA_HOME = ${env.JAVA_HOME}"/>
<echo message="windows ANT_HOME = ${env.ANT_HOME}"/>
</target>
</project>
Oracle Nashorn в качестве инструмента командной строки ив качестве встроенного интерпретатора в приложениях Java вики
Nashorn - это движок JavaScript ECMA-совместимый , разработанный на языке программирования JavaOracle.Он основан на Da Vinci Machine (JSR 292) и выпущен с Java 8. _ jdk.nashorn.api.scripting.NashornScriptEngine
openjdk
До Java SE 7 JDK поставлялись с механизмом сценариев JavaScript, основанным на Mozilla Rhino.Вместо этого Java SE 8 будет поставляться с новым механизмом Oracle Nashorn, который основан на JSR 292 и invokedynamic.Он обеспечивает лучшее соответствие нормализованной спецификации JavaScript ECMA и лучшую производительность во время выполнения через сайты вызовов с динамическими связями.
Расширения Nashorn и некоторые из Rhino определенное расширение, которое уже поддерживается nashorn.Пример:
var String = Java.type("java.lang.String"); // Nashorn way!
var Array = java.lang.reflect.Array // Rhino way!
// collections are interpreted as arrays.
var arr = [ "hello", "world" ];
var list = Java.to(array, Java.type("java.util.List"))
Существует несколько расширений Rhino / Mozilla, которые поддерживаются, только если вы загружаете скрипт совместимости, предоставляемый nashorn.Сценарий совместимости загружается с использованием «load ('nashorn:mozilla_compat.js
»)