GreenDao发电机任务在gradle中

时间:2014-02-01 04:52:29

标签: android gradle greendao

我想使用GreenDao,但我不想为dao生成器进行单独的项目。

是否有可能在Gradle中创建一个任务,它只会生成一个新的dao类并覆盖之前的任何内容?

更新1:

我想要这样的结构:

src/main/java/model         // output of generator
src/main/java/daoGenerator  // generator source

使用/ src / main / java / daoGenerator和greendao-generator库的唯一任务 将是:

gradle generate

更新2:

最棒的是,当调用任何任务时,请检查src/main/java/daoGenerator中的任何内容是否已更改,如果是,则在调用任务之前触发gradle generate

2 个答案:

答案 0 :(得分:0)

首先创建一个像这样的目录结构

src/your_build_type/java/model         // output of generator
src/your_build_type/java/daoGenerator  // generator source

现在,您可以在模块的buildType中定义自己的build.gradle

       buildTypes {
          your_build_type {
            runProguard false
            proguardFile getDefaultProguardFile('proguard-android.txt')
            debuggable false

        }

定义这将为您生成名为assembleYour_buildtype的任务,运行该任务将获取your_build_type目录的sourceSets以及main。如果同时出现两个类,那么在编译时将使用your_build_type中的那个类。

Gradle将自动完成更改和任务处理,观看 Hans Dockter 此处的精彩介绍

http://www.youtube.com/watch?feature=player_detailpage&v=5a91dBLX8Qc#t=2372

答案 1 :(得分:0)

也许你可以做类似java / withIntegrationTests的事情?我没有使用GreenDao的经验,也没有经过测试,但有点像:

sourceSets {
    greendao {
        java.srcDir file('src/greendao/java')
    }
}

task generate(type:JavaCompile){
    mainClassesDir = sourceSets.greendao.output.classesDir
    classpath = sourceSets.greendao.runtimeClasspath
}

然后只需要依赖于dependsOn,mustRunAfter等堡垒。如果更改了源,或者输出已更改,则应运行生成。也许输出的东西有点烦人。所以也许你想以某种方式覆盖它。