Maven Antlr3插件在奇怪的位置生成代码

时间:2013-12-18 20:45:36

标签: maven antlr antlr3

我在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和默认输出目录的一些奇怪组合来确定输出路径。

我缺少什么配置?

由于

1 个答案:

答案 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>