我正在开发一个项目,我在主代码中有一个antlr4语法,并且我想添加一个"迷你语法"对于一些测试。我希望为该迷你语法生成的.java
文件只能用于测试代码。 antlr4-maven-plugin可以支持吗?
经过一些实验,我决定采用这种不太理想的设置:
src/main/resources
中(我知道这不是标准的地方;我设置sourceDirectory
来解释这个问题)${project.build.directory}/generated-sources/antlr4/**/MyTestGrammar*.java
${project.build.directory}/generated-test-resources/antlr4
${project.build.directory}/generated-test-resources/antlr4
这需要三个插件配置,并且我明确指定哪些生成的语法用于测试,哪些用于主代码。还有更好的方法吗?
答案 0 :(得分:3)
将测试语法保存在$ {baseDir} / src / test / antlr4的子文件夹中。 然后你可以尝试在POM的build-plugins元素中添加这样的东西:
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>${antlr4.plugin.version}</version>
<configuration>
<arguments>
<argument>-visitor</argument>
</arguments>
</configuration>
<executions>
<execution>
<id>antlr-4</id>
<goals>
<goal>antlr4</goal>
</goals>
</execution>
<execution>
<id>antlr-test</id>
<configuration>
<sourceDirectory>${baseDir}/src/test/antlr4</sourceDirectory>
<outputDirectory>${baseDir}/target/generated-test-sources-antlr/antlr4</outputDirectory>
</configuration>
<phase>generate-test-sources</phase>
<goals>
<goal>antlr4</goal>
</goals>
</execution>
</executions>
</plugin>
然后在编译测试类时添加生成源:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-test-sources</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>${baseDir}/target/generated-test-sources-antlr/antlr4</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
您可能希望根据需要调整目录和包名称