且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2023-02-07 14:40:39

There is an option for java compiler which allows to customize output directory for generated java sources (documentation).

-s dir

Specify the directory where to place generated source files. The directory must already exist; javac will not create it. If a class is part of a package, the compiler puts the source file in a subdirectory reflecting the package name, creating directories as needed. For example, if you specify -s C:\mysrc and the class is called com.mypackage.MyClass, then the source file will be placed in C:\mysrc\com\mypackage\MyClass.java.

Example of 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"
        }
    }
}

This code snippet does next:

  • creates and specifies directory as output for generated code
  • deletes generated sources if clean task is invoked
  • adds new source set

Update

Use gradle apt plugin instead.