【问题标题】:GreenDao generator task in gradlegradle 中的 GreenDao 生成器任务
【发布时间】:2014-02-02 05:12:32
【问题描述】:

我想使用 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:

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

【问题讨论】:

  • 没有让您的问题更具体。据我了解,您需要具有不同构建的不同源类。如果是,那么您可以使用产品风味。一旦您清除您的,我会回答您如何实现这一目标。
  • 我已经更新了问题。
  • 检查我的答案一次,是你想要的吗?。

标签: android gradle greendao


【解决方案1】:

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

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

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

       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

【讨论】:

    【解决方案2】:

    也许你可以做一些类似 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 等堡垒上过火。如果源更改或输出已更改,则应运行 Generate。也许输出的东西有点烦人。所以也许你想以某种方式覆盖它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 2020-04-30
      • 2020-04-06
      • 1970-01-01
      相关资源
      最近更新 更多