我正在为 gradle 编写一个插件,为 Android 项目生成一些类。
我在项目 src/gen/java
文件夹中生成这些类,因为我不希望它们与真正的源代码混合。
从项目的 build.gradle
配置中,我可以添加它以使构建工具看到生成的类:
android {
sourceSets {
main {
java {
srcDir 'src/gen/java'
}
}
}
}
问题是我希望我的插件自动设置它。从我的插件中,我尝试了以下操作:
公共(public)类 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'
}
}
}
}
每次插件都可以运行,但是编译器仍然看不到该文件夹,并且在编译时找不到生成的类。有人知道从插件中执行此操作的另一种方法吗?
最佳答案
如果您将文件移动到应用模块的 build/generated/sources
目录,插件当前正在为您生成代码,那么您不必将其添加到源集中。
你也可以看看SQLDelight这也是一个 gradle 插件,可以生成代码或 AutoValue
编辑:
您还需要调用 registerJavaGeneratingTask在将生成源代码的 BuildVariant 上
关于android - 如何从 gradle 插件将文件夹添加到 android 项目源集中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40485449/