0

我正在使用 build.xml 中的以下 ant 脚本阅读教程

<project name="calculator4" default="generate" basedir=".">
    <property name="src" location="src" />
    <property name="gen" location="gen" />
    <property name="src" location="src" />
    <property name="package" value="calculator4" />

    <target name="generate">
        <mkdir dir="${gen}/${package}" />
        <java classname="org.antlr.v4.Tool" classpathref="classpath" fork="true">
            <arg value="-o" />
            <arg path="${gen}/${package}" />
            <arg value="-lib" />
            <arg path="${src}/${package}" />
            <arg value="-listener" />
            <arg value="${src}/${package}/Calculator.g4" />
        </java>
    </target>

由于我对 ant 不太了解并且不想使用它,因此我尝试将命令翻译为 bash 像这样

java org.antlr.v4.Tool -o gen/calculator4 -lib src/calculator4 -listener src/calculator4/Calculator.g4

但这是错误的,因为它在 gen/calculator4/src/calculator4 中生成文件,因为它应该在 gen/calculator4 中生成文件的正确行为

除了直接替换之外,${} 有什么特别之处吗?

4

1 回答 1

0

生成文件的相对路径与输入文件的相对路径匹配。由于您指定src/calculator4/Calculator.g4为输入文件,因此输出文件将为src/calculator4/*.java.

  1. 更改目录,使工作目录与所在的文件夹相同Calculator.g4
  2. 删除-lib src/calculator4论据。
  3. -o将参数更改为-o ../../gen/calculator4
  4. 传递Calculator.g4给命令的最后一个参数。
于 2013-09-12T00:51:32.903 回答