Java 如何配置JDK以便gradlew在每台机器、每个项目的基础上使用?
讨论中的项目来自多个开放源码组织,在其gitl/build.gradle/gradle包装上有多个规则 我的默认系统范围JDK设置为OpenJava11。我想保持它的最新,发布的JDK 如何覆盖单个项目gradle包装器以使用特定的JDK?;没有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的文件,如果该文件
在您的主目录中创建一个名为
.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的帮助,我仍然希望有人有一个更干净的解决方案,但这将为我解决这个问题。如果您愿意,请查看我发布的答案。