Project contains annotation processor which generates java code during compilation. By default, gradle outputs generated source files into build/classes
directory. That causes some problems with discovery of newly generated source files by IntelliJ.
Is there any straightforward way of configuring gradle to output source files into another directory? For example $buildDir/gen/main/java
or $buildDir/build/generated/main/java
?
There is no way at the moment to force the 'working dir' of gradle process. Normally, we strongly recommend that your build. gradle should not depend on the working dir. Instead of new File(projectDir, “foo.
Project contains annotation processor which generates java code during compilation. By default, gradle outputs generated source files into build/classes directory.
The Jar is created under the $project/build/libs/ folder.
After you build the project, the output APK for the app module is located in app/build/outputs/apk/ , and the output AAR for any lib modules is located in lib/build/outputs/libs/ . Each time you change a source file or resource, you must run Gradle again in order to package up the latest version of the application.
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:
Use gradle apt plugin instead.
Simply specify value for project.buildDir property in your build.gradle file:
project.buildDir = '/gen/main/java'
This will put all generated build files to the <project_root>/gen/main/java
folder.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With