以前使用greendao时,需要一个辅助的java项目,用于生成android端greendao代码。现在开发android项目基本是用android studio,构建工具使用gradle。gradle非常灵活强大,理论上讲,java能做的,gradle都能做。因此把greendao-generator集成在gradle中也不算什么难事。这样做的好处是,少了一个java module,省事。
具体想法是在build.gradle中定义一个gradle task,在task里调用greendao-generator接口。

添加greendao依赖

编辑打开app/build.gradle文件,添加android程序greendao依赖

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
//加入greendao的依赖
compile 'de.greenrobot:greendao:2.1.0'
}

定义greendaoGenerate Task

在项目根路径的build.gradle中:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
import de.greenrobot.daogenerator.Entity
import de.greenrobot.daogenerator.Schema
import de.greenrobot.daogenerator.DaoGenerator
buildscript {
repositories {
jcenter()
}
dependencies {
//加入greendao-generator的依赖,gradle执行task的环境依赖在这里定义
classpath 'com.android.tools.build:gradle:2.0.0-beta7'
classpath 'de.greenrobot:greendao-generator:2.1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
task greendaoGenerate << {
def pack = 'com.chenkaihua.gradlegreendaosimple'
Schema schema = new Schema(1, "${pack}.entity");
schema.defaultJavaPackageDao = "${pack}.dao"
schema.hasKeepSectionsByDefault = true
schema.useActiveEntitiesByDefault = true;
Entity user = schema.addEntity("User");
user.addIdProperty();
user.addStringProperty("name");
user.addStringProperty("password");
new DaoGenerator().generateAll(schema, "app/src/main/java", null, "app/src/test/java");
}

主要步骤是:

  1. buildScript闭包中,定义仓库,然后添加依赖de.greenrobot:greendao-generator:2.1.0。这里的依赖是执行gradle task所需要的依赖。
  2. import需要的包
  3. 新增task(greendaoGenerate),在task中调用DaoGenerator

生成dao

很简单,执行greendaoGenerate task 就行了

gradle greendaoGenerate

结果如下:
第一次运行时,gradle会下载greendao-generator依赖,速度可能比较慢
gradle-greendao-download-jar

之后可以从控制台看到generate信息
gradle-greendao-result

完成之后刷新项目,是这个样子的

gradle-greendao-app-view

Demo下载

Demo我已经传到github了,有兴趣的同学可以瞄一瞄

https://github.com/ichenkaihua/GradleGreendaoSimple