2016-11-08 80 views
1

我正在爲gradle寫一個插件,爲Android項目生成一些類。如何從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' 
      } 
     } 
    } 
} 

}

每次插件的工作原理,但該文件夾仍然沒有被編譯器看到的,它可以」編譯時找到生成的類。有沒有人知道另一種方式從插件做到這一點?

回答

2

如果您將文件移動到應用程序模塊的build/generated/sources目錄,該插件當前正在爲您生成代碼,那麼您不必將其添加到源代碼集。

你也可以看看SQLDelight這也是gradle這個插件,它確實代碼生成或AutoValue

編輯:

您還需要調用registerJavaGeneratingTask上,將產生源的BuildVariant

相關問題