我在H:/ compiler
下使用插件和Antlr 3.3版我的src / main / antlr3 / com / cbc / example目录下有一个名为CBCTokens.g的令牌文件。在同一个包中,我有一个名为MyScribe.g的解析器语法文件,它使用tokenVocab = CBCTokens引用标记。我在同一目录中也有一个树语法。
然而,当我尝试执行构建时,我在插件遇到的第一个文件上收到错误:
Error(1): cannot write file : java.io.FileNotFoundException: H:\compiler\target\generated-sources\antlr3\H:\compiler\src\main\antlr3\CBCTokensLexer.java (The filname, directory name, or volume label syntax is incorrect)
在我看来,插件使用baseDir和默认输出目录的一些奇怪组合来确定输出路径。
我缺少什么配置?
由于
答案 0 :(得分:0)
首先,最好的事情是永远不要在src/main/
文件夹中生成代码。这意味着对于您的配置,只需删除<outputDirectory>
标记并删除<sourceDirectory>
,因为它是antlr3-maven-plugin的默认值。
<build>
<plugins>
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr3-maven-plugin</artifactId>
<version>3.3</version>
<configuration>
<printGrammar>false</printGrammar>
<verbose>true</verbose>
</configuration>
<executions>
<execution>
<goals>
<goal>antlr</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>