簡體   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