java - 在Gradle中,在Android上,Storm注释处理器可以像AndroidAnnotations处理器一样运行吗?

标签 java android apt android-gradle-plugin build.gradle

我已经能够使用 gradle(以及 Dagger)成功运行 AndroidAnnotations,但是一旦我尝试将storm-apt 添加到生成器,gradle 就会默默失败,跳过所有注释处理。

这里是一个示例 build.gradle,它可以在没有包含storm-apt jar 的行的情况下工作(即运行aa apt 处理器,但不能运行storm apt 处理器),但会失败(即无法运行aa apt 处理器,以及 Storm apt 处理器):

import groovy.io.FileType

apply plugin: 'android'

android {
    compileSdkVersion 18
    buildToolsVersion "18.1.1"

    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 18
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
    }
}

repositories {
    mavenCentral()
}

ext.androidAnnotationsVersion = '2.7.1'
configurations {
    apt
}

dependencies {
    apt "com.googlecode.androidannotations:androidannotations:${androidAnnotationsVersion}"
    // commenting out the following line will allow the aa apt processor to complete,
    // while leaving it uncommented will cause all annotation processing, 
    // both aa and storm to silently fail
    apt files('libs/storm-apt-0.97.jar')

    compile "com.googlecode.androidannotations:androidannotations-api:${androidAnnotationsVersion}"
    compile files('libs/storm-api-0.97.jar')
}

afterEvaluate { project ->
    android.applicationVariants.each { variant ->

        variant.javaCompile.doFirst {
            println "*** compile doFirst ${variant.name}"
            ext.aptOutput = file("${project.buildDir}/source/r/${variant.dirName}")
            aptOutput.mkdirs()

            aptOutput.eachFileRecurse FileType.FILES, {
                if (it.name.equals('R.java')) {
                    return
                }
                it.delete()
            }

            variant.javaCompile.options.compilerArgs += [
                    '-processorpath', configurations.apt.getAsPath(),
                    '-s', aptOutput
            ]

            println "*** ${variant.javaCompile.options.compilerArgs}"
        }
    }
}

最佳答案

我不确定该代码中出现了什么问题,但现在有一个更好的解决方案,称为 android-apt ,这是一个gradle插件。

关于java - 在Gradle中,在Android上,Storm注释处理器可以像AndroidAnnotations处理器一样运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19672862/

相关文章:

java - Android 应用程序不会记住 USB 权限

java - 单元测试在构建服务中失败但在本地失败

java - 如何在 iText 中翻转坐标系?

java - 在 Java 的 Cypher 查询中指定参数

ubuntu - apt源代码的官方github链接是什么

ubuntu - 在 ubuntu 上安装 openssh-LPK 补丁

postgresql - 如何在 ubuntu 14.04 中安装 postgis 1.5?

java - 如何提取 XML 的某些部分但有一些不相似之处

没有道路/城市/国家标签的 Android 卫星 map View

Android SDK文件夹结构