Gradle 包装器如何确定它使用的是哪个 Groovy 版本?
How does the Gradle wrapper determine which Groovy version it's using?
This question 没有提到包装器。
OS 是 Linux Mint 18.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
从 OS 我得到以下信息(注意,我知道这无关紧要!):
mike@M17A ~ $ groovy -version
WARNING: An illegal reflective access operation has occurred
...
Groovy Version: 2.5.8 JVM: 11.0.4 Vendor: Ubuntu OS: Linux
(请注意,如果您使用 JDK > 8,则会出现此处的警告:目前您无能为力)。
我得到以下系统的 Gradle 版本(同样无关紧要):
mike@M17A ~ $ gradle -version
WARNING: An illegal reflective access operation has occurred
...
------------------------------------------------------------
Gradle 4.8.1
------------------------------------------------------------
...
Groovy: 2.4.12
...
但是我的 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中编写的),与[=46无关=] 自己的构建操作和其他任务?
注意我很想卸载我的系统 Gradle 和我的系统 Groovy,因为它们只是混淆了问题,并且只依赖于使用包装器。这是一个明智的想法吗?
Gradle 与 Groovy 捆绑在一起,不会查看您在系统上安装的其他版本。这就是为什么您在不同的 Gradle 版本中看到不同的 Groovy 版本。您无法更改此版本,因为它是 Gradle 的一部分,并且可能无法与任何其他版本一起使用。如果您好奇,可以查看 Gradle 发行版中的 "lib" 文件夹,查看 Gradle 的所有第三方库,包括 Groovy - 不要去摆弄他们。
正如您提到的,在您的构建脚本中声明了对 Groovy 的编译依赖性使得编译时使用该特定版本。这通常是您唯一应该关心的事情。 (顺便说一句,compile
已弃用,您应该使用 implementation
。)
我不确定您的目标是什么,但我强烈建议您只使用 Gradle 包装脚本,这意味着您可以根据需要卸载 Gradle 的系统安装。您可以忽略系统上的 Groovy 版本(如果您不在其他地方使用它,也可以将其卸载)。
This question 没有提到包装器。
OS 是 Linux Mint 18.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
从 OS 我得到以下信息(注意,我知道这无关紧要!):
mike@M17A ~ $ groovy -version
WARNING: An illegal reflective access operation has occurred
...
Groovy Version: 2.5.8 JVM: 11.0.4 Vendor: Ubuntu OS: Linux
(请注意,如果您使用 JDK > 8,则会出现此处的警告:目前您无能为力)。
我得到以下系统的 Gradle 版本(同样无关紧要):
mike@M17A ~ $ gradle -version
WARNING: An illegal reflective access operation has occurred
...
------------------------------------------------------------
Gradle 4.8.1
------------------------------------------------------------
...
Groovy: 2.4.12
...
但是我的 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中编写的),与[=46无关=] 自己的构建操作和其他任务?
注意我很想卸载我的系统 Gradle 和我的系统 Groovy,因为它们只是混淆了问题,并且只依赖于使用包装器。这是一个明智的想法吗?
Gradle 与 Groovy 捆绑在一起,不会查看您在系统上安装的其他版本。这就是为什么您在不同的 Gradle 版本中看到不同的 Groovy 版本。您无法更改此版本,因为它是 Gradle 的一部分,并且可能无法与任何其他版本一起使用。如果您好奇,可以查看 Gradle 发行版中的 "lib" 文件夹,查看 Gradle 的所有第三方库,包括 Groovy - 不要去摆弄他们。
正如您提到的,在您的构建脚本中声明了对 Groovy 的编译依赖性使得编译时使用该特定版本。这通常是您唯一应该关心的事情。 (顺便说一句,compile
已弃用,您应该使用 implementation
。)
我不确定您的目标是什么,但我强烈建议您只使用 Gradle 包装脚本,这意味着您可以根据需要卸载 Gradle 的系统安装。您可以忽略系统上的 Groovy 版本(如果您不在其他地方使用它,也可以将其卸载)。