我想使用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
。
答案 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等堡垒。如果更改了源,或者输出已更改,则应运行生成。也许输出的东西有点烦人。所以也许你想以某种方式覆盖它。