gradle构建如何处理antlr3和antlr4语法?
我有一个遗留项目,其中使用了ANTLR3和ANTLR4语法。我们想将gradle构建如何处理antlr3和antlr4语法?,gradle,build.gradle,antlr4,antlr3,Gradle,Build.gradle,Antlr4,Antlr3,我有一个遗留项目,其中使用了ANTLR3和ANTLR4语法。我们想将ant构建系统更新为gradle。有一个支持ANTLR2/3/4的。但是,很明显,它一次只支持三个依赖项中的一个(取决于添加的依赖项) 在我们的项目中,antlr3文件具有后缀.g,而antlr4语法具有后缀.g4 这个插件有没有一个选项或者一个替代插件可以让我同时使用两个ANTLR版本的语法 谢谢你的提示 plugins { id 'java-library' id 'antlr' } dependencie
ant
构建系统更新为gradle
。有一个支持ANTLR2/3/4的。但是,很明显,它一次只支持三个依赖项中的一个(取决于添加的依赖项)
在我们的项目中,antlr3文件具有后缀.g
,而antlr4语法具有后缀.g4
这个插件有没有一个选项或者一个替代插件可以让我同时使用两个ANTLR版本的语法
谢谢你的提示
plugins {
id 'java-library'
id 'antlr'
}
dependencies {
// ...
// If both are mentioned, then "X.g" is also treated as antlr4
antlr "org.antlr:antlr:3.5.2" // use ANTLR version 3
antlr "org.antlr:antlr4:4.5" // use ANTLR version 4
}
目前,antlr插件不支持多个版本。解决方法是使用
JavaExec
tasks调用antlr3或antlr4。这里有一个方法
task runAntlr4(类型:JavaExec){
//请参阅增量任务api,防止在没有任何更改的情况下重新运行。
inputs.dir“src/main/antlr4/”
outputs.dir“$projectDir/build/generated/antlr/main/”
classpath=configurations.antlr4
main=“org.antlr.v4.Tool”
args=[“-verbose”、“-visitor”,
“-o”、“$projectDir/build/generated/antlr/main/”,
“-包”,
“src/main/antlr4/MyLanguage.g4”]
}
compileJava.dependsOn runAntlr4
- 使用
和“org.antlr.Tool”模拟configurations.antlr3
antl3
- 将输出目录添加到
sourceset.main.java
configurations{
antlr3,
antlr4
}
dependencies {
antlr3 "org.antlr:antlr:3.5.2"
antlr4 "org.antlr:antlr4:4.7.1"
compile "org.antlr:antlr-runtime:3.5.2"
compile "org.antlr:antlr4-runtime:4.7.1"
}
task runAntlr4(type:JavaExec) {
//see incremental task api, prevents rerun if nothing has changed.
inputs.dir "src/main/antlr4/"
outputs.dir "$projectDir/build/generated/antlr/main/"
classpath = configurations.antlr4
main = "org.antlr.v4.Tool"
args = [ "-verbose", "-visitor",
"-o", "$projectDir/build/generated/antlr/main/",
"-package", <my-package>,
"src/main/antlr4/MyLanguage.g4"]
}
compileJava.dependsOn runAntlr4