使用Gradle在Java之前/之后编译Scala

cri*_*aig 19 java scala compiler-errors cross-compiling gradle

默认的scala插件任务流在Scala之前编译Java,因此在Java中导入Scala源会导致"error:找不到符号". scala任务流程

cri*_*aig 31

我发现以下sourceSet配置来解决问题:

sourceSets {
    main {
        scala {
            srcDirs = ['src/main/scala', 'src/main/java']
        }
        java {
            srcDirs = []
        }
}
Run Code Online (Sandbox Code Playgroud)

这是因为scala源集可以包含java和scala源.

  • 如果您希望将Java和Scala源保存在单独的目录中并希望所有代码都是联合编译的,那么这是正确的解决方案.另一种方法是保持默认设置,将Java代码联合编译成`src/main/scala`,剩下的Java代码(如果有的话)放到`src/main/java`中. (4认同)