繁体   English   中英

如何从gradle插件向android项目源集添加文件夹

[英]How to add a folder to an android project sourceset from a gradle plugin

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

}

每次插件工作时,编译器仍然看不到该文件夹​​,并且在编译时无法找到生成的类。 有没有人知道从插件中执行此操作的另一种方法?

如果您将文件移动到app模块的build/generated/sources目录,插件当前正在为您生成代码,那么您不必将其添加到源集。

您还可以查看SQLDelight ,它也是一个执行代码生成或AutoValue的gradle插件

编辑:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM