在gradle中更改生成代码的输出目录

新手上路,请多包涵

项目包含在编译期间生成 java 代码的注释处理器。默认情况下,gradle 将生成的源文件输出到 build/classes 目录中。这会导致 IntelliJ 发现新生成的源文件时出现一些问题。

有什么简单的方法可以配置 gradle 将源文件输出到另一个目录?例如 $buildDir/gen/main/java$buildDir/build/generated/main/java

原文由 Araz Abishov 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.3k
2 个回答

java 编译器有一个选项,它允许为生成的 java 源( 文档)自定义输出目录。

-s 目录

指定放置生成的源文件的目录。该目录必须已经存在; javac 不会创建它。如果类是包的一部分,编译器会将源文件放在反映包名称的子目录中,并根据需要创建目录。例如,如果您指定 -s C:\mysrc 并且类名为 com.mypackage.MyClass,那么源文件将放在 C:\mysrc\com\mypackage\MyClass.java 中。

例子 build.gradle

 compileJava {
    options.compilerArgs << "-s"
    options.compilerArgs << "$projectDir/generated/java"

    doFirst {
        // make sure that directory exists
        file(new File(projectDir, "/generated/java")).mkdirs()
    }
}

clean.doLast {
    // clean-up directory when necessary
    file(new File(projectDir, "/generated")).deleteDir()
}

sourceSets {
    generated {
        java {
            srcDir "$projectDir/generated/java"
        }
    }
}

此代码片段接下来执行:

  • 创建目录并将其指定为生成代码的输出
  • 如果调用 clean 任务,则删除生成的源
  • 添加新的源集

更新

请改用 gradle apt 插件

原文由 Araz Abishov 发布,翻译遵循 CC BY-SA 3.0 许可协议

只需在 build.gradle 文件中为 project.buildDir 属性指定值:

 project.buildDir = '/gen/main/java'

这会将所有生成的构建文件放入 <project_root>/gen/main/java 文件夹。

原文由 Ivan Pronin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题