Gradle包装器如何确定它是哪个Groovy版本';他在用什么?

Gradle包装器如何确定它是哪个Groovy版本';他在用什么?,gradle,groovy,versioning,Gradle,Groovy,Versioning,没有提到包装纸 操作系统是LinuxMint18.3 因此,对于这个项目,我从包装器中获得以下信息: mike@M17A ~/software projects/eclipse-workspace/TM_Engine_Exp $ ./gradlew -version ------------------------------------------------------------ Gradle 5.4.1 ----------------------------------------

没有提到包装纸

操作系统是LinuxMint18.3

因此,对于这个项目,我从包装器中获得以下信息:

mike@M17A ~/software projects/eclipse-workspace/TM_Engine_Exp $  ./gradlew -version

------------------------------------------------------------
Gradle 5.4.1
------------------------------------------------------------

Build time:   2019-04-26 08:14:42 UTC
Revision:     261d171646b36a6a28d5a19a69676cd098a4c19d

Kotlin:       1.3.21
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM:          11.0.4 (Ubuntu 11.0.4+11-post-Ubuntu-116.04.1)
OS:           Linux 4.4.0-53-generic amd64
从操作系统中,我得到以下信息(注意,我知道这与此无关!):

(注意,如果您使用JDK>8,这里会出现警告:目前对此您无能为力)

对于系统的Gradle版本,我得到以下信息(同样不相关):

但my build.gradle当前包含以下依赖项:

apply plugin: 'groovy'
...
dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.5.7'
    ...
我的环境变量是:

GROOVY_HOME=/home/mike/.sdkman/candidates/groovy/current
我不知道这是怎么发生的。据我所知,那里的文件几乎肯定配置为使用2.5.8

所以我的问题是:包装器如何选择使用2.5.4,我要去哪里找到这些Groovy语言文件?

另外,build.gradle依赖项部分中的版本可能只适用于我的测试和构建文件(即,由我在Groovy中编写),而与gradle自己的构建操作和其他任务无关


注意,我很想卸载我的系统Gradle和我的系统Groovy,因为它们只是混淆了这个问题,仅仅依赖于使用包装器。这是一个明智的想法吗?

Gradle与Groovy捆绑在一起,并没有查看您在系统上安装的其他版本。这就是为什么在不同的Gradle版本中会看到不同的Groovy版本。您无法更改此版本,因为它是Gradle的一部分,可能无法与任何其他版本一起使用。如果您感到好奇,您可以查看Gradle发行版中的“lib”文件夹,查看Gradle的所有第三方库,包括Groovy,只是不要随便摆弄它们

正如您所提到的,在构建脚本中声明了Groovy的编译依赖关系,使得编译时使用该特定版本。这通常是你唯一应该关心的事情。(顺便说一句,
compile
已被弃用,您应该使用
implementation

我不确定您的目标是什么,但我强烈建议只使用Gradle包装脚本,这意味着您可以卸载Gradle的系统安装,如果您愿意的话。您可以忽略系统上的Groovy版本(如果您没有在其他地方使用它,也可以卸载它)

apply plugin: 'groovy'
...
dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.5.7'
    ...
GROOVY_HOME=/home/mike/.sdkman/candidates/groovy/current