我正在努力弄清楚如何使用 antlr4 maven 插件来运行 TestRig 类?
我已经阅读了 mvn antlr4:help -Ddetail=true
的输出,这是我能找到的唯一文档,但这没有提到如何使用 TestRig .那么,将测试装置与 Maven 一起使用的推荐方法是什么?使用 grun 别名方法在这里看起来不是很优雅。
更新 - 推理
你好:)
是的,不要误会我的意思,但我真的不明白为什么您不想在 Maven 插件中使用此功能?而且我不明白为什么它的灵魂目的应该是编译语法?
目前,如果我使用 Maven 维护构建,并且使用 antlr4-maven-plugin
,它将在我的 Maven 存储库中安装插件和 antlr 4.1。有了这个,为什么我要开始向我的类路径添加东西并在 Maven 可以处理的时候创建别名?我的意思是,这就是 Maven 的真正用途。如果我有一个 antlr4:TestRig
目标,那么我要做的就是使用它。无需手动维护类路径或创建 bash 别名。它会起作用的。
并且比在我的类路径中对本地 maven 存储库中的元素进行硬编码并维护 bash 别名要优雅得多。或者,每个维护两个安装。我希望使用的 antlr 版本(一个由我维护,只是为了使用 TestRig,另一个由 maven 维护,用于其他所有内容)。
此外,如果我想使用不同版本的 antlr,那么我不需要更新类路径和别名,maven 会简单地为我管理所有这些:)
最佳答案
这是我用 Maven 调用 TestRig 的方式:
mvn exec:java -Dexec.mainClass="org.antlr.v4.runtime.misc.TestRig"
-Dexec.args="<DOT_NOTATION_GRAMMAR_CLASSPATH> <START_RULE>
-gui <INPUT_FILE>"
因此,如果您在 src/main/antlr4/com/test/parser 中获得了 MyGrammar.g4,起始规则为 startRule:
mvn exec:java -Dexec.mainClass="org.antlr.v4.runtime.misc.TestRig"
-Dexec.args="com.test.parser.MyGrammar startRule
-gui <INPUT_FILE>"
关于java - Antlr4 "Test Rig"和行家,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18572152/