如何通过Gradle插件将文件夹添加到Android项目sourceset

o4tp2gmn  于 2023-06-23  发布在  Android
关注(0)|答案(1)|浏览(176)

我正在为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'
            }
        }
    }
}

}
每次插件工作,但编译器仍然看不到文件夹,编译时无法找到生成的类。有没有人知道另一种方法来做到这一点从插件?

klsxnrf1

klsxnrf11#

如果您将文件移动到插件当前正在为您生成代码的app模块的build/generated/sources目录中,那么您不必将其添加到源代码集中。
你也可以看看SQLDelight,它也是一个gradle插件,可以生成代码,或者AutoValue

编辑:

您还需要在生成源代码的BuildVariant上调用registerJavaGeneratingTask

相关问题