如何在Gradle中将自定义Antlr输出路径添加到主源集?

时间:2016-01-21 19:42:51

标签: java gradle antlr antlr4

所以,我一般都是Gradle和Java的新手,并且遇到了很多问题。由于IntelliJ的其他一些奇怪的困难,我想改变Antlr输出生成的代码的路径。这很容易改变:

generateGrammarSource {
    outputDirectory = file("src/temp/generated-code")
}

然而,现在我很难将它编译成我的“主要”和“测试”源集。我基本上只想扩展主要和测试源集以包含这些文件。我试着这样做:

sourceSets {
    generated{
        java {
            srcDir 'src/temp/generated-code'
        }
    }
    main {
        compileClasspath += generated.output
        runtimeClasspath += generated.output
    }
    test {
        compileClasspath += generated.output
        runtimeClasspath += generated.output
    }
}

但是,这样做不允许生成的代码编译访问依赖项。因此,编译失败,因为它无法使用antlr包中的所有内容。

是否有任何简单的方法来添加这些依赖项,或者,只是强制主要和测试源集以某种方式包含生成的代码?

1 个答案:

答案 0 :(得分:0)

我最终以一种看似简单的方式解决这个问题:

sourceSets {
    main {
        java {
            srcDirs = ["src/main/java", "src/temp/generated-code"]
        }
    }
}

虽然我确实需要添加它以进行适当的清理:

clean.doFirst {
    delete "src/temp"
}

我觉得可能有更好的方法来做到比在任何地方传递这些路径名称,但似乎工作正常