Java 如何配置JDK以便gradlew在每台机器、每个项目的基础上使用?

Java 如何配置JDK以便gradlew在每台机器、每个项目的基础上使用?,java,git,gradle,gradlew,Java,Git,Gradle,Gradlew,讨论中的项目来自多个开放源码组织,在其gitl/build.gradle/gradle包装上有多个规则 我的默认系统范围JDK设置为OpenJava11。我想保持它的最新,发布的JDK 如何覆盖单个项目gradle包装器以使用特定的JDK?;没有 使用命令行参数,我无法记住每次需要调用它的时候 更改现有GitIgnors、gradle包装器或提交的构建脚本/属性的项目 在我的本地git回购中,有需要经常忽略的更改 在您的主目录中创建一个名为.gitignore\u global的文件,如果该文件

讨论中的项目来自多个开放源码组织,在其gitl/build.gradle/gradle包装上有多个规则

我的默认系统范围JDK设置为OpenJava11。我想保持它的最新,发布的JDK

如何覆盖单个项目gradle包装器以使用特定的JDK?;没有

  • 使用命令行参数,我无法记住每次需要调用它的时候
  • 更改现有GitIgnors、gradle包装器或提交的构建脚本/属性的项目
  • 在我的本地git回购中,有需要经常忽略的更改

  • 在您的主目录中创建一个名为
    .gitignore\u global
    的文件,如果该文件尚不存在(似乎是联机的常用名称)

    添加一个条目,允许您忽略所有项目可能未使用的文件扩展名

    #ignore all privignores
    *.privignore
    
    运行以下命令,将全局忽略文件添加到您的git配置中

    git config --global core.excludesfile ~/.gitignore_global
    
    现在,任何git repo中以.privignore结尾的任何文件都将被git忽略

    在你的路径上创建一个bash脚本,对我来说,用户脚本的相关文件夹是

    ~/.local/bin/
    我把它命名为
    gradl

    #!/bin/bash
    file=jdk.privignore
    if [ -f "$file" ]; then
        export JAVA_HOME=`cat jdk.privignore`
    fi 
    echo $JAVA_HOME
    exec ./gradlew "$@"
    
    此脚本将环境变量
    JAVA_HOME
    设置为
    jdk.privignore
    的内容,只要调用
    gradl
    。这可以改进为仅在文件存在时才执行操作。它还会将所有参数传递给
    gradlew

    chmod~/.local/bin/gradl+x
    将为
    gradl
    脚本提供执行位,以便它可以运行

    使用
    sudo update alternations--config java
    查找安装了哪些其他可能的java

    其中一个选项看起来像
    /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
    ,您需要将
    /jre/bin/java
    从java\u HOME的末尾删除

    在gradle项目根目录中创建一个名为
    jdk.priviignore

    将其内容设置为:
    /usr/lib/jvm/java-8-openjdk-amd64

    现在,当调用gradl时,
    JAVA\u HOME
    将被导出。

    是一个专门用来解决此类问题的工具

    jEnv是什么

    jEnv是一个命令行工具,可以帮助您忘记如何设置JAVA_HOME环境变量

    它可以

    • 列出托管JDK
    • 配置全局版本
    • 配置本地版本(每个目录)
    • 配置shell实例版本

    路径上创建一个shell脚本,查看调用它的位置,设置正确JDK的路径,然后调用
    gradlew
    。运行shell脚本,而不是
    gradlew
    。其他任何事情都将涉及修改每个项目中的gradle文件,感谢@AndyBrown的帮助,我仍然希望有人有一个更干净的解决方案,但这将为我解决这个问题。如果您愿意,请查看我发布的答案。