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

3

所以,我对Gradle和Java都很陌生,遇到了很多问题。由于IntelliJ出了一些奇怪的问题,我想要改变Antlr输出生成代码的路径。这个更改非常容易:

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

然而,现在我在将其编译成我的“main”和“test”源集时遇到了很大的困难。我基本上只想扩展主要和测试源集以包括这些文件。我尝试使用以下方式进行:

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

然而,这样做不允许生成的代码编译时访问依赖项。因此,编译失败,因为它不能使用antlr软件包中的所有内容。

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

1个回答

1

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

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

虽然我确实需要添加这个来进行适当的清理:
clean.doFirst {
    delete "src/temp"
}

我觉得可能有比到处传递这些路径名更好的方法,但它似乎运行良好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接