我正在尝试使用Maven构建一个ANTLR项目,项目结构就像
src/main +
|-antlr4
|-fo/bar
|-G1.g4
|-G2.g4
|-imports
其中G1进口G2如:
grammar G1;
import G2;
但是,当我使用Maven构建时,我收到以下错误:
[ERROR] Message{errorType=CANNOT_FIND_IMPORTED_GRAMMAR, args=[G2, fo\bar\G1.g4], e=null, fileName='null', line=-1, charPosition=-1}
如果我将G1.g4
和G2.g4
直接放在antlr4
目录下,则无效。在我看来,当将语法文件放在一个包中时,它需要在import语句中使用特殊语法。
我注意到问题Antlr4 maven plugin cannot find grammar files in different directories,但在这里,语法位于一个目录中。
答案 0 :(得分:11)
我认为你需要导入包中的G2.g4
语法(src/main/antlr4/imports
),但你会复制你的语法。要避免这种情况,请更改ANTLR插件的导入设置,如下所示:
<build>
<plugins>
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>4.1</version>
<!-- vvv key part here vvv -->
<configuration>
<libDirectory>${basedir}/src/main/antlr4/fo/bar</libDirectory>
</configuration>
<!-- ^^^ key part here ^^^ -->
<executions>
<execution>
<goals>
<goal>antlr4</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
请注意配置libDirectory
。