我正在为gradle写一个插件,为Android项目生成一些类。
我在项目src/gen/java
文件夹中生成这些类,因为我不希望它们与真实的源代码混合。
从项目的build.gradle
配置中,我可以添加以下内容,以使构建工具看到生成的类:
android {
sourceSets {
main {
java {
srcDir 'src/gen/java'
}
}
}
}
问题是我希望我的插件自动设置这个。从我的插件我尝试了以下内容:
public class 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'
}
}
}
}
}
每次插件工作,但编译器仍然看不到文件夹,编译时无法找到生成的类。有没有人知道另一种方法来做到这一点从插件?
1条答案
按热度按时间klsxnrf11#
如果您将文件移动到插件当前正在为您生成代码的app模块的
build/generated/sources
目录中,那么您不必将其添加到源代码集中。你也可以看看SQLDelight,它也是一个gradle插件,可以生成代码,或者AutoValue
编辑:
您还需要在生成源代码的BuildVariant上调用registerJavaGeneratingTask