Gradle 如何确保在编译之前生成代码?
我有一个Gradle 如何确保在编译之前生成代码?,gradle,antlr,Gradle,Antlr,我有一个build.gradle和以下代码: apply plugin: 'java' apply plugin: 'application' gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" } } ext.antlr = [ grammarpackage: "org.shirolang.i
build.gradle
和以下代码:
apply plugin: 'java'
apply plugin: 'application'
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:unchecked"
}
}
ext.antlr = [
grammarpackage: "org.shirolang.interpreter",
antlrSource: 'src/main/java/org/shirolang',
destinationDir: "src/generated/java"
]
sourceSets{
generated
main{
compileClasspath += generated.output
runtimeClasspath += generated.output
}
test{
compileClasspath += generated.output
runtimeClasspath += generated.output
}
}
project.run.classpath += sourceSets.generated.output
repositories {
mavenCentral()
}
configurations {
antlr4
}
sourceSets{
main{
java{
srcDirs 'src/main/java', 'src/antlr/java'
}
}
}
dependencies {
...
}
task wrapper(type: Wrapper) {
gradleVersion = '2.4'
}
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
task antlrOutputDir << {
mkdir(antlr.destinationDir)
}
task generateGrammarSource(dependsOn: antlrOutputDir, type: JavaExec) {
// code to generate a antlr grammar
}
compileJava {
dependsOn generateGrammarSource
classpath += sourceSets.generated.output
}
由于源代码是在运行compileGeneratedJava
任务之后生成的,因此会出现大量缺少符号的错误。为什么不先将dependsOn
行添加到compileJava
任务中,让它变得有趣
如果在运行run
之前自己运行generateGrammarSource
,现在会出现错误,因此我知道代码生成工作正常
我又试了一次,但没有用。我似乎无法将任务注入构建周期中的适当位置。如何让
generatedGrammarSource
在编译步骤之前运行?问题出在sourceset
块中,我在其中设置srcDirs
。它应该是“src/generated/java”,而不是“src/antlr/java”。直接列出的错误代码导致gradle看不到生成的源。问题出现在我设置srcDirs属性的sourceSets块中。它应该是“src/generated/java”而不是“src/antlr/java”。Jeffrey,如果你的评论解决了你的问题,请随意回答并接受你自己的问题。忘了我可以这么做。将在2天等待期后接受答复。
:antlrOutputDir
:compileGeneratedJava UP-TO-DATE
:processGeneratedResources UP-TO-DATE
:generatedClasses UP-TO-DATE
:generateGrammarSource