gradle脚本集成greendao-generator生成android端greendao
以前使用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");
}
主要步骤是:
- 在
buildScript
闭包中,定义仓库,然后添加依赖de.greenrobot:greendao-generator:2.1.0
。这里的依赖是执行gradle task
所需要的依赖。 import
需要的包- 新增task(
greendaoGenerate
),在task中调用DaoGenerator
。
生成dao
很简单,执行greendaoGenerate
task 就行了
gradle greendaoGenerate
结果如下:
第一次运行时,gradle会下载greendao-generator
依赖,速度可能比较慢
之后可以从控制台看到generate信息
完成之后刷新项目,是这个样子的
Demo下载
Demo我已经传到github了,有兴趣的同学可以瞄一瞄