首页 > 解决方案 > 带有 Graal VM 的 Apache Ant

问题描述

我们将 Apache Ant 与 Nashorn JavaScript 引擎一起使用,该引擎在 jdk 15 及更高版本中已被弃用和删除。我试图找到如何从 Nashorn 切换到 Graal VM,但即使在 Apache 网站上也没有找到任何可用信息。请告知我需要哪些罐子,应该放哪些罐子。我们有什么需要改变的代码。如果有人已经这样做了,请分享您的经验。我有一个示例,它针对 jdk1.8.0_311 运行:

<?xml version="1.0" ?>
<project name="test" default="test">
    <property environment="env"/>   
    <target name="test" >
        <script language="javascript">          
            <![CDATA[
            load("nashorn:mozilla_compat.js");
            importPackage(java.time);
            var today = new Date();
            var date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
            self.log("This script is for Test Of Nashorn Javascript Engine");
            print ("Today is: " + date );
            ]]>
        </script>
    </target>
</project>

结果如下:

test:
   [script] Warning: Nashorn engine is planned to be removed from a future JDK release
   [script] This script is for Test Of Nashorn Javascript Engine
   [script] Today is: 2021-11-3

BUILD SUCCESSFUL
Total time: 0 seconds

标签: java-11nashorngraalvm

解决方案


您还可以将独立的 Nashorn作为依赖项添加到您的 Ant 构建中;将它放在您的 Antlib目录中应该可以。默认情况下,$ANT_HOME/lib但某些 Ant 安装使用不同的位置,例如,自制安装的 Ant 将使用/usr/local/share/ant. 如果你不想把它放在 lib 中,你也可以把它和你的项目放在一起,并在标签内使用<classpath>or来指向它。<classpathref><script>

请注意,独立的 Nashorn 在类路径上也需要 ASM 7.3.1。两者的 JAR 都可以从 Maven Central 下载。


推荐阅读