Gradle任务未运行

时间:2014-05-25 00:54:11

标签: android groovy gradle android-studio

我在iOS上做了一段时间后终于学习了Android开发。我没有很多术语,所以请善待。

在最初创建我自己的sqlite文件(通过SQLiteOpenHelper子类)并尝试自己处理所有持久化的数据模型之后,我决定选择一些第三方代码来处理所有这些。我公司的Android工程师建议使用GreenDAO。

为了创建模型和DAO对象(我也认为是sqlite文件),我还被指示设置一些gradle构建脚本。这是我认为我有些不对劲的地方。

我使用的是Android Studio,项目结构的相关部分看起来像这样......

- Project Directory
    - app
        - build.gradle
    - buildSrc
        - src/main/groovy/com/ridinghorses/app
            - DatabaseBuilder.groovy
        - build.gradle
    - build.gradle

在我的项目目录中的build.gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}

在我的buildSrc目录中的build.gradle ...

repositories {
    mavenCentral()
}

dependencies {
    compile 'de.greenrobot:greendao-generator:1.3.+@jar'
    compile 'org.freemarker:freemarker:2.3.+'
}

在我的app目录中的build.gradle

apply plugin: 'android'

import com.ridinghorses.app.DatabaseBuilder;

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'
}

task buildDatabase {
    inputs.file file('../buildSrc/src/main/groovy/com/ridinghorses/app/DatabaseBuilder.groovy')
    outputs.dir file('src/main/java/com/ridinghorses/app/database/dao')

    doLast {
        println('Calling DatabaseBuilder::buildDatabase')
        new DatabaseBuilder().buildDatabase(file('src/main/java/').path)
    }
}

最后在我的DatabaseBuilder.groovy文件中

package com.ridinghorses.app
import de.greenrobot.daogenerator.DaoGenerator
import de.greenrobot.daogenerator.DaoUtil
import de.greenrobot.daogenerator.Entity
import de.greenrobot.daogenerator.Schema

public class DatabaseBuilder {
    // tables
    private Entity tier
    private Entity lesson

    def buildDatabase(String outPath) {

        println("DatabaseBuilder::buildDatabase")

        def schema = new Schema(1, "com.ridinghorses.app.database.dao")

        tier = schema.addEntity('Tier')
        lesson = schema.addEntity('Lesson')

        buildTierTable()
        buildLessonTable()

        def generator = new DaoGenerator()
        generator.generateAll(schema, outPath)
    }

    private buildTierTable() {
        tier.addIdProperty()
                .primaryKey()
        addStringProperty(tier, 'title')
                .notNull()
                .index()

    }

    private buildLessonTable() {
        lesson.addIdProperty()
                .primaryKey()
        addStringProperty(lesson, 'title')

        def tierId = addLongProperty(lesson, 'tierId').getProperty()
        lesson.addToOne(tier, tierId)
    }
}

完成所有这些后,我将我的项目与gradle文件同步并构建。我从未在Android Studio的控制台或Logcat中看到任何println语句,我从未看到我的任何模型生成。我也从未收到任何错误,说我做错了。

如果我故意输入语法错误,则构建过程会停止,并且会收到错误消息。所以这告诉我它至少试图对我生成的文件做些什么。但我不确定下一步该尝试什么。您无法设置断点。那么你可以设置它们,它们只是不会被击中。

0 个答案:

没有答案