是否可以在同一个 build.xml - ANT 构建中使用多个 Java 版本。 - ANTLR3.3

Is it possible to use multiple Java versions within same build.xml - ANT build. - ANTLR3.3

我正在处理一个遗留项目,需要升级才能使用 Java8。在升级过程中,我们遇到了 ANTL3.3 的问题,因为它与 Java8.

不兼容

现在由于某些依赖关系,我们无法升级 ANTLR 版本,ANTLR 用于从 Grammar(.g) 文件生成 Java 文件。

现在,在 ANT 中 - build.xml。我想把它分成两部分。

  1. 其中 ANTLR 目标是 运行,其中 Grammar 文件被转换为 Java 使用的文件。在这部分我想使用 Java1.7.

    ANTLR - Garmmar ===Java1.7===> output generated Java files

  2. 一旦使用 1.7 生成 Java 文件,它应该使用 Java8 与现有的 Java 文件一起编译,然后应该准备最终包。

    Generated Java files + existing java source code ===Java8===> Compile classes

假设您使用 java Ant task.g 语法文件生成词法分析器和解析器 类,然后您可以使用 jvm 属性指向您的1.7 Java 二进制:

<java
    jvm="/path/to/java-1.7/bin/java" 
    classname="org.antlr.Tool" 
    fork="true"
    failonerror="true"
    maxmemory="1024m">
  
  <arg value="T.g" />
  <classpath refid="classpath" />
</java>

其中 <classpath ... 指向您的 ANTLR 3.3 JAR(以及您需要的其他 类 可能需要在类路径中):

<?xml version="1.0" encoding="UTF-8"?>
<project>
    <path id="classpath">
        ...
        <fileset dir="lib">
            <include name="*.jar" />
        </fileset>
    </path>
    ...
</project>