如何使用Groovy Android Gradle Plugin首先编译groovy代码

时间:2015-02-22 18:33:49

标签: java android groovy gradle android-gradle

我正在尝试将https://github.com/groovy/groovy-android-gradle-plugin与Android Studio 1.1.0一起使用:

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath 'org.codehaus.groovy:gradle-groovy-android-plugin:0.3.5'
        classpath 'com.android.tools.build:gradle:1.0.1'
    }
}

./gradlew -v

------------------------------------------------------------
Gradle 2.2.1
------------------------------------------------------------

Build time:   2014-11-24 09:45:35 UTC
Build number: none
Revision:     6fcb59c06f43a4e6b1bcb401f7686a8601a1fb4a

Groovy:       2.3.6
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.7.0_65 (Oracle Corporation 24.65-b04)
OS:           Linux 3.13.0-24-generic amd64

apply plugin: 'groovyx.grooid.groovy-android'
...
dependencies {
    compile 'org.codehaus.groovy:groovy:2.4.0:grooid'
    compile 'com.android.support:multidex:1.0.0'
}

我有一些从Android SDK类扩展的Groovy类和从Groovy类扩展的应用程序Java类。 Groovy类在src / main / groovy下,Java类在src / main / java下。

Groovy的:

package com.yavezu.client.android.fragment.models.object;
import android.support.v4.app.Fragment;

public abstract class ObjectFragment2<E extends Base> extends Fragment {}
public abstract class ExistingObjectFragment2 <E extends Base> extends ObjectFragment2<E> {}

爪哇:

package com.yavezu.client.android.fragment.models.object;
public abstract class ObjectViewFragment<E extends Base> extends ExistingObjectFragment2<E> {}

当我构建项目时,我收到以下错误:

Error:(13, 66) error: cannot find symbol class ExistingObjectFragment2

似乎gradle首先编译java代码,然后编译groovy代码。但是在这里我需要首先编译groovy代码然后编译java代码,因为java代码依赖于groovy代码。

我看到两种可能的解决方案:

  1. 将groovy代码放在一个单独的模块中并明确依赖它,但它看起来像是解决方法,因为我不需要额外的模块
  2. 将java代码放在src / main / groovy下。这可能会使用groovyc编译java代码(如果我错了,请纠正我),但我更喜欢使用javac编译纯java代码(出于兼容性和性能原因)
  3. 有没有办法在同一模块中的java代码之前编译groovy代码?

1 个答案:

答案 0 :(得分:0)

选项二或设置插件以查看java源文件夹是最好的选择。如果你需要进行联合编译,你需要使用groovy编译器来查看java和groovy文件。