Groovy 无法解析 class 但可以在 groovyconsole 中使用

Groovy unable to resolve class but works in groovyconsole

正在尝试将 gpars withPool 方法导入到我的项目中。导入在 groovyconsole 中有效,但在 gradle.

中构建时无效

groovy控制台和gradle都是运行groovy版本2.4.5

有什么想法吗?

Groovy 控制台

import static groovyx.gpars.GParsPool.withPool
withPool(2) { (1..5).collectParallel { println it.toString() } }

输出:

1
3
2
4
5
Result: [null, null, null, null, null]

Gradle编译Groovy

与上面相同的导入步骤:

import static groovyx.gpars.GParsPool.withPool

Gradle 输出:

:compileGroovystartup failed:
C:\Programming\Projects\groovy\src\main\groovy\lib.groovy: 18: unable to resolve class groovyx.gpars.GParsPool
 @ line 18, column 1.
   import static groovyx.gpars.GParsPool.withPool
   ^

1 error

 FAILED

如果您希望将某些东西导入到您的构建脚本中,那么您必须将其作为构建脚本依赖项提供,以便 Gradle 知道在哪里可以找到它,就像:

buildscript {    
    repositories {
        mavenCentral()
        jcenter()
    }

    dependencies {
        classpath group: 'org.codehaus.gpars', name: 'gpars', version: '1.1.0'
    }
}

import static groovyx.gpars.GParsPool.withPool

如果您导航到 groovy 的安装位置 - 可能在 $GROOVY_HOME 下并列出文件夹,您会注意到 lib 文件夹。列出 lib 文件夹的内容表明那里存在 gpars-1.2.1.jar (groovy v2.4.5)。

当通过 groovysh 或 [=21] 启动 groovy 时,位于 lib 文件夹中的所有这些 jar 文件都会添加到类路径中=]groovy控制台。

然而,当涉及到 gradle 时,这不会发生,正如@Stanislav 回答的那样,您需要手动将其添加到类路径中。