我正在为gradle编写插件,为Android项目生成一些类。
我在项目src/gen/java
文件夹中生成这些类,因为我不希望它们与真实的源代码混合在一起。
从项目的build.gradle
配置中,我可以添加它以使构建工具看到生成的类:
android {
sourceSets {
main {
java {
srcDir 'src/gen/java'
}
}
}
}
问题是我希望我的插件自动设置它。从我的插件中我尝试了以下内容:
公共类MyPlugin实现了插件{
@Override
public void apply(Project project) {
// ...
// TEST 1 : doesnt work
project.android.sourceSets.main.java.srcDirs += "src/gen/java"
// TEST 2 : doesnt work
project.android.sourceSets {
main {
java {
srcDir 'src/gen/java'
}
}
}
}
}
每次插件工作时,编译器仍然看不到该文件夹,并且在编译时无法找到生成的类。是否有人知道从插件中执行此操作的另一种方法?
答案 0 :(得分:3)
如果您将文件移至应用模块的build/generated/sources
目录,该插件目前正在为您生成代码,那么您不必将其添加到源设置。
您还可以查看SQLDelight,这也是一个执行代码生成的gradle插件或AutoValue
修改强>
您还需要调用将生成源
的BuildVariant上的registerJavaGeneratingTask