当前位置: 首页 > 知识库问答 >
问题:

如何首先使用groovy Android Gradle插件编译groovy代码

柯浩壤
2023-03-14

我正在尝试使用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类,我的应用程序Java从Groovy类扩展的类。Groovy类在src/main/groovy下,Java类在src/main/java下。

非常棒:

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下。这可能会使java代码用groovyc编译(如果我错了,请纠正我),但我更喜欢纯java代码用javac编译(出于兼容性和性能原因)

有没有办法让groovy代码在同一模块中先于java代码编译?

共有1个答案

严宏朗
2023-03-14

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

 类似资料:
  • 我正在从事一个Java web项目,该项目使用Liquibase groovy DSL管理数据库更改。就本主题而言,它可以是使用将文件作为源文件。这项工程是用格雷德尔建造的。在我的一个模块()的文件夹下,我有groovy文件(等)。这些文件应该在运行时由liquibase jar加载。 现在,当我尝试在IntelliJ中创建项目时,它会给出以下错误消息: Groovyc:无法编译Groovy文件:

  • 问题内容: 现在,我已经在Windows 7上成功安装了Cython,我尝试使用Cython编译一些Cython代码,但是gcc使我的生活变得艰难。 使用gcc编译代码时,会抛出数十个 对 -erros的 未定义引用 ,并且我很确定src是可用的(如安装教程所述,如果缺少此文件,则会抛出 对 -errors的 未定义引用 )。 奇怪的是,使用*或-script可以很好地工作,但是当仍然在模块上工作

  • 我能够编译我的源代码和生成仪器类(包括xxx-clover.war)使用mvn Clover2:仪器命令使用三叶草4.0.6 maven插件。当我尝试使用三叶草开源4.2.0时,我无法执行任何三叶草目标,如仪器、三叶草、设置。 有人能告诉我如何使用clover开源4.2.0版本编译我的项目吗?

  • 问题内容: 我有一个文件和。 当我进行调试构建时,我得到: 如何将添加到基础任务?关于Java编译选项的Gradle插件用户指南无济于事。 问题答案: 我根据有关操作任务的Gradle插件用户指南和有关JavaCompile的Gradle DSL文档 找到了以下解决方案: 添加到: 应用程序变体在Gradle的配置阶段,所需的任务也不存在,因此我在执行阶段进行了修改。

  • 所以我试着在https://grpc.io/docs/tutorials/basic/java.html#generating-客户端和服务器代码,但我在使用grpc插件和protoc编译器进行编译时遇到问题。我已经设置了pom。xml与插件(我认为)正确结合,但编译器不会生成指南所需的文件(即RouteGuideGrpc.java)。 我目前正在编译。使用“mvn protobuf:编译”的pr