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

How can I configure the JDK for gradlew to use, on a per machine, per project basis?

相关项目来自多个开源组织,其 gitignores / build.gradle / gradle wrappers 有多个规则。

我的默认系统范围 JDK 设置为打开 Java 11。我想保持最新,已发布 JDK。

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

  1. 使用命令行参数我将无法记住每次需要调用它时。
  2. 更改现有项目git忽略、gradle 包装器或提交buildscripts/properties。
  3. 在我的本地 git 存储库中需要经常忽略更改。

在您的主目录中创建一个名为 .gitignore_global 的文件,如果该文件不存在(似乎是网上的通用名称)。

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

#ignore all privignores
*.privignore

运行以下命令,将全局忽略文件添加到您的排除git配置中。

git config --global core.excludesfile ~/.gitignore_global

现在任何 git 存储库中以 .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 "$@"

此脚本将在调用 gradl 的任何地方将环境变量 JAVA_HOME 设置为 jdk.privignore 的内容。这可以改进为仅在文件存在时才执行。它还会将所有参数传递给 gradlew

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

使用 sudo update-alternatives --config java 查找其他可能安装的 Java。

其中一个选项看起来像 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 您需要从末尾删除 /jre/bin/java 以获得 JAVA_HOME

在 gradle 项目根目录中创建一个文件,在 gradlew 旁边,名为 jdk.privignore

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

现在调用gradl时,JAVA_HOME会被导出

http://www.jenv.be/ 是一个字面上用来解决这样的问题的工具。

什么是 jEnv?

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

可以

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