我在安装 gradlew 时遇到问题...我可以通过在终端中简单地输入“gradle”来使用 gradle 命令,但“gradlew”不做任何事情。我使用安装了gradle
sudo apt install gradle
Run Code Online (Sandbox Code Playgroud)
并且安装成功。我必须使用“sudo gradle”而不是“gradle”,因为当我不使用 sudo 时会出现这种情况。
icebunny08@D3CRYPT3D:~$ gradle
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.gradle.internal.reflect.JavaMethod (file:/usr/share/gradle/lib/gradle-base-services-3.4.1.jar) to method java.lang.ClassLoader.getPackages()
WARNING: Please consider reporting this to the maintainers of org.gradle.internal.reflect.JavaMethod
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Starting a Gradle Daemon (subsequent builds will be faster)
:help
Welcome to Gradle 3.4.1.
To run a build, run gradle <task> ...
To see a list of available tasks, run gradle tasks
To see a list of command-line options, run gradle --help
To see more detail about a task, run gradle help --task <task>
BUILD SUCCESSFUL
Total time: 5.017 secs
Run Code Online (Sandbox Code Playgroud)
我的问题是我是否正确安装了 Gradle,为什么我不能使用“gradlew”命令。这是我使用“gradlew”时的输出。
icebunny08@D3CRYPT3D:~$ gradlew
Command 'gradlew' not found, did you mean:
command 'gradle' from deb gradle
Try: sudo apt install <deb name>
Run Code Online (Sandbox Code Playgroud)
小智 8
运行命令的gradle当你有这些警告是由于与JDK 9或更高版本的一些常规问题,如所描述这里。
如果这些警告对您来说是个问题,您可以使用所描述的解决方法使它们消失:
您可以将以下参数添加到 java bootstrap 脚本或 JAVA_OPTS 以抑制此警告:
--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
现在关于 gradlew。
Gradlew 是 gradle 的包装器。它绑定到一个项目,而不是你的工作站。换句话说,您开发的每个 gradle 项目都可能附带一个 gradle 包装器。gradlew 的目的是使项目可移植(即开发人员不需要在他们的工作站上安装 gradle)和可靠(即每个人都使用相同版本的 gradle)。包装器脚本将为您的项目下载指定版本的 gradle,然后运行它。这在他们的文档中都有描述。
你在你的情况下所做的是在你的工作站上全局安装 gradle。在安装的gradle不来gradlew,作为gradlew需要被添加到您所选择的每一个项目的gradle,如所描述这里。您只需在项目中运行以下命令:
gradle wrapper
Run Code Online (Sandbox Code Playgroud)
这将为您的 gradle 项目创建包装器脚本。显然你需要安装 gradle 来运行这个命令(你已经安装了它),但是如果你提交结果并与其他开发人员共享,他们可以使用 gradlew 脚本而无需安装 gradle。
在您的情况下,您最终有两种可能性:
gradle clean. 您可以这样做,因为您在全局手动安装了 gradlegradlew clean. 您可以这样做,因为您首先使用它创建了包装器脚本gradle wrapper。如果 gradle 版本相同,两者都应该给出相同的结果。