[英]The SourceSet 'robolectric' is not recognized by the Android Gradle Plugin
[英]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.