如何在Ubuntu on Windows上使用Windows JDK构建Gradle项目?

9
我的Windows 10机器最近被强制升级到了新版本的 "创作者更新",现在 "关于你的电脑" 小部件将我的操作系统版本报告为 "1703"。
我想尝试使用 Windows 子系统 Linux / Ubuntu on Windows 来编译我的 Gradle 项目。
我已经安装了一个 Windows JDK,位于 c:\jvm\jdk1.8.0_102
在我的 MinGW 终端窗口 ("git bash") 中,我可以设置 JAVA_HOME,并从我的源代码目录执行 gradle wrapper 脚本,它会正常工作。
export JAVA_HOME=/c/jvm/jdk1.8.0_102
./gradlew tasks

但我不知道如何在WSL中做同样的事情。 打开“Windows上的Ubuntu Bash”终端,切换到我的源目录并调用以下命令:

export JAVA_HOME=/mnt/c/jvm/jdk1.8.0_102
./gradlew tasks

以下是结果:
ERROR: JAVA_HOME is set to an invalid directory: /mnt/c/jvm/jdk1.8.0_102

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.

请注意,Windows JDK 在 bash 终端中可以正常运行。在 Ubuntu 终端中执行 $JAVA_HOME/bin/java.exe -version 将能够很好地工作。
问题是:
是否有办法在“Bash on Ubuntu on Windows”终端中使用先前安装的 Windows JDK 运行我的 gradlew 脚本?
请注意:
我特别询问的是是否可能使用 Windows JDK 运行我的 Gradle 脚本,而不是使用安装在 WSL 中的 Ubuntu/Linux JDK。 我明白我可能可以通过在 Windows 子系统中安装 Linux JDK 来运行我的 gradle 包装脚本,但我正在尝试弄清楚是否可能使用 Windows JDK 运行我的构建。

你好 @Shorn,我很好奇你是否已经成功设置了你的环境,使用Gradle脚本在WSL中而不需要安装到Linux中。 - Martin D
1
@MartinD 不,我在找不到关于这种事情的太多信息后放弃了。决定给WSL几年时间来发展 - MinGW/Cygwin等对我的使用来说已经足够好了。 - Shorn
3个回答

2

如果你正在使用WSL并且想要从WSL终端运行gradlew,那么你可以按照以下步骤操作:

最初的回答:

cmd.exe /c gradlew --version
cmd.exe /c gradlew :help
cmd.exe /c gradlew app:dependencies
cmd.exe /c gradlew app:dependencies | grep -i "com.android.support"

我正在使用的是Windows系统版本:

最初的回答
rdey@surface-book:/mnt/c/Users/rdey/git/ici$ cmd.exe /c "systeminfo" | grep "^OS Version"
OS Version:                10.0.17763 N/A Build 17763

2
为了确保我没有错过任何明显的问题,我下载了 Android Studio(其中包含 JDK,或者说是构建 Android 项目所需的最小 Java 工具集)的 Windows 和 Linux 版本,并将它们安装到两个不同的目录中:Windows 版本在 C:\Program Files\Android\Android Studio,Linux 版本在 ~/android-studio
在 WSL 中,我首先设置了 JAVA_HOMEC:\Program Files\Android\Android Studio\jre,并运行了 gradlew。它给了我一个“无效目录”错误信息。
接下来,我将 JAVA_HOME 设置为 ~/android-studio/jre。一切都按预期运行。
然后,我将 Windows 版本的 Android Studio 复制到 ~/android-studio-windows 并将 JAVA_HOME 设置为 ~/android-studio-windows/jre。它给了我相同的“无效目录”错误消息,因此我认为 WSL 不能像使用原生工具那样使用 Windows 工具(至少目前还不行)。
因此,如果您的目标是在 WSL 中使用 gradle,则需要在 WSL 中安装适用于 Linux 的 OpenJDK(或类似软件)。

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接