我试图在gradle中设置Antlr任务,以在与程序包名称匹配的文件夹中生成源。
我尝试将包添加到语法的@header中,但这不会像IntelliJ Antlr插件那样生成包文件夹树。 我也尝试通过以下示例将包传递给attibuts来使用CLI参数。
stateRecord
但是我得到的是
任务:generateGrammarSource失败 错误(2):未知的命令行选项-package my.package.name
当我将generateGrammarSource {
maxHeapSize = "64m"
arguments += ["-package my.package.name", "-visitor"]
}
和-package
放入单独的条目(my.package.name
)中时,将运行代码生成,但是既没有将程序包添加到代码中,也没有创建文件夹。似乎被忽略了
我使用的是Antlr 4.7.2版,并且gradle与intellij 191捆绑在一起。
是否有基于包名称的基于gradle的方式来设置antlr插件的输出位置?
答案 0 :(得分:2)
看着一个旧项目,我在4.10.2
使用了带有包装器的以下配置,并且捆绑了任何antlr插件版本:
generateGrammarSource {
outputDirectory = file("$outputDirectory/org/mellowd/compiler")
arguments += ['-package', 'org.mellowd.compiler']
arguments += ['-visitor']
arguments += ['-no-listener']
inputs.files(source.files)
}
当时需要inputs.files(source.files)
,因为尽管语法发生了变化,但该任务仍被错误地认为是最新的,因此不确定是否仍然需要该部分。
您有责任确保输出目录中的路径与指定软件包的路径匹配。