我总是成功地将ANTLR4与Eclipse中的Maven结合使用。 我只想更改存储语法的默认目录,因为我不喜欢标准路径 src / main / antlr4 。这个路径的问题是创建一个新的java包,我真的不想要。 所以我只是决定在我的项目中创建另一个名为 grammar 的目录,其中包含另一个名为 imports 的目录。我只是遵循网站指南这样做。 尽管如此,当我更改语法时,即使使用maven命令,它也不会自动生成新的源!
所以,这是我的配置文件pom.xml:
<!-- ANTLR4 -->
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>4.5.3</version>
<executions>
<execution>
<configuration>
<goals>
<goal>antlr4</goal>
</goals>
<libDirectory>grammar/imports</libDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
如您所见,目标目录为空。在此更改之前,内部有一个 generated-sources 目录,包含所有.java文件。
那么,错误在哪里?
答案 0 :(得分:1)
正确的方法是:
<!-- ANTLR4 -->
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>4.5.3</version>
<executions>
<execution>
<goals>
<goal>antlr4</goal>
</goals>
<configuration>
<libDirectory>grammar/imports</libDirectory>
</configuration>
</execution>
</executions>
</plugin>
根据Maven文档https://maven.apache.org/guides/mini/guide-configuring-plugins.html#Using_the_executions_Tag和https://maven.apache.org/guides/mini/guide-default-execution-ids.html
<configuration>代码必须与<goals>
代码内的<execution>
代码相同。 >
事实上,ANTLR4 Maven插件中的文档是错误的: http://www.antlr.org/api/maven-plugin/latest/examples/libraries.html