【问题标题】:Using groovy classes within Gradle build在 Gradle 构建中使用 groovy 类
【发布时间】:2014-02-20 10:56:26
【问题描述】:

我正在尝试从我的 build.gradle 文件中运行一个 Groovy 类。我按照the use guide 中的指示进行操作,但出现错误。

构建文件是:

apply plugin: 'java'
apply plugin: 'groovy'

  main {
    java {
      srcDirs = ["$projectDir/src/java"]
    }
    groovy {
      srcDirs = ["$projectDir/src/groovy"]
    }
  }

    dependencies {
        compile 'org.codehaus.groovy:groovy-all:2.2.0', files(....)
    }

    task fooTask << {
        groovyClass groovyClass = new groovyClass()
        groovyClass.foo()
    }

groovy 类很简单:

    public class groovyClass {

            public void foo() {
                    println 'foo'
            }
    }

但是,当我尝试运行 gradlew compile fooTask 时,我收到以下错误:

无法解析类 groovyClass

知道为什么吗?

谢谢

【问题讨论】:

  • 我已经尝试了this post 中建议的解决方案,但问题仍然存在

标签: groovy build gradle


【解决方案1】:

如果您想从构建中引用它(而不是在简单的 Exec 任务中),您需要将类添加到 buildSrc。鉴于此目录结构:

|-buildSrc
|    |- src
|        |- main
|            |- groovy
|                |- GroovyClass.groovy
|- build.gradle

GroovyClass.groovy 在哪里:

class GroovyClass {
    void foo() {
        println 'foo'
    }
}

build.gradle 是:

apply plugin: 'groovy'

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.2.1'
}

task fooTask << {
    GroovyClass g = new GroovyClass()
    g.foo()
}

然后,运行 gradle fooTask 给出输出:

$ gradle fooTask
:buildSrc:compileJava UP-TO-DATE
:buildSrc:compileGroovy UP-TO-DATE
:buildSrc:processResources UP-TO-DATE
:buildSrc:classes UP-TO-DATE
:buildSrc:jar UP-TO-DATE
:buildSrc:assemble UP-TO-DATE
:buildSrc:compileTestJava UP-TO-DATE
:buildSrc:compileTestGroovy UP-TO-DATE
:buildSrc:processTestResources UP-TO-DATE
:buildSrc:testClasses UP-TO-DATE
:buildSrc:test UP-TO-DATE
:buildSrc:check UP-TO-DATE
:buildSrc:build UP-TO-DATE
:fooTask
foo

BUILD SUCCESSFUL

Total time: 4.604 secs

【讨论】:

  • 你知道是否有办法改变 gradle 查找类的位置,而不是 buildSrc/src/main/groovy 而是在 src/main/groovy 中查找它?
  • 我不知道。要运行构建,它首先必须运行构建,所以你会遇到先有鸡还是先有蛋的情况。如果两个文件都需要该文件并且您不想维护两个文件,则不确定 buildSrc 中指向 SRC 中 groovy 文件的符号链接是否有效?
  • gradle 将从您的 build.gradle 中获取 srcDirs 中的 groovy 源代码。把你想成为 gradle 源目录的任何路径都放上去就可以了。
猜你喜欢
  • 2012-02-03
  • 1970-01-01
  • 2014-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
  • 2018-03-10
  • 1970-01-01
相关资源
最近更新 更多