【问题标题】:How does the Gradle wrapper determine which Groovy version it's using?Gradle 包装器如何确定它使用的是哪个 Groovy 版本?
【发布时间】:2019-09-02 22:20:22
【问题描述】:

This question 没有提到包装器。

操作系统是 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

从操作系统我得到以下信息(注意我知道这无关紧要!):

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 编写的),与 Gradle 自己的构建操作和其他任务无关?

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

【问题讨论】:

    标签: gradle groovy versioning


    【解决方案1】:

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

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

    我不确定您的目标是什么,但我强烈建议您仅使用 Gradle 包装脚本,这意味着您可以根据需要卸载 Gradle 的系统安装。您可以忽略系统上的 Groovy 版本(如果您不在其他地方使用,则将其卸载)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-14
      • 2010-11-17
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      • 1970-01-01
      相关资源
      最近更新 更多